如何在java中解析XML以使用STAX在db中保存值?

如何在java中解析XML以使用STAX在db中保存值?,java,xml,stax,jdom,Java,Xml,Stax,Jdom,我是JavaStax解析器的新手,我必须解析xml来填充我的数据库表 在尝试使用STAX读取XML文件时,我遇到了这个问题。 在XML文件中,不同根节点中可能有同名的子节点。我不太明白如何从根节点读取特定的子节点 XML文件示例:- <?xml version="1.0" encoding="UTF-8"?> <DOC xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocat

我是JavaStax解析器的新手,我必须解析xml来填充我的数据库表

在尝试使用STAX读取XML文件时,我遇到了这个问题。 在XML文件中,不同根节点中可能有同名的子节点。我不太明白如何从根节点读取特定的子节点

XML文件示例:-

<?xml version="1.0" encoding="UTF-8"?>
<DOC xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="XML.xsd">
<FMTR>
<TITLEPG>
  <TITLENUM>Title 1</TITLENUM>
  <SUBJECT>Test 1</SUBJECT>
</TITLEPG>
<BTITLE>
  <P></P>      
</BTITLE>
<TOC>
  <EXPL>
    <SUBJECT>Explanation</SUBJECT>
  </EXPL>
  <TITLENO>
    <CHAPTI>
      <SUBJECT>Chapter I—Test 1</SUBJECT>
    </CHAPTI>
  </TITLENO>
  <FAIDS>
    <SUBJECT>Table of Titles and Chapters</SUBJECT>
    <SUBJECT>Alphabetical List</SUBJECT>
  </FAIDS>
</TOC>
</FMTR>
</DOC>  

标题1
测试1

解释 第一章测试1 标题和章节表 字母表
对于例如:-我必须阅读TITLEPG根标签的主题标签,并相应地填充数据库表

我们可以使用STAX获取根节点的子节点吗

解析它的最佳方法是什么:STAX或JDOM

javastax中的类是用于读取XML文件的基于迭代器的API。它将允许您在XML中从一个事件移动到另一个事件,允许您决定何时移动到下一个事件

您正在这里查找“事件”。请记住,Stax和xpath是非常不同的东西。Stax允许您仅向前解析流式XML文档

您可以通过javax.xml.stream.XMLInputFactory类创建XMLEventReader。尝试运行演示代码(根据需要进行更改),您可以看到所需的对象

XMLInputFactory factory = XMLInputFactory.newInstance();

//get Reader connected to XML input from somewhere..
Reader reader = getXmlReader();

try {

    XMLEventReader eventReader =
    factory.createXMLEventReader(reader);

} catch (XMLStreamException e) {
    e.printStackTrace();
}
现在,使用此eventReader获得所需的内容…对其进行迭代,请参见调试模式中的

while(eventReader.hasNext()){
   // this is what you want...
    XMLEvent event = eventReader.nextEvent();

    if(event.getEventType() == XMLStreamConstants.START_ELEMENT){
        StartElement startElement = event.asStartElement();
        System.out.println(startElement.getName().getLocalPart());
    }
    //handle more event types here...
}
JavaStax中的类是用于读取XML文件的基于迭代器的API。它将允许您在XML中从一个事件移动到另一个事件,允许您决定何时移动到下一个事件

您正在这里查找“事件”。请记住,Stax和xpath是非常不同的东西。Stax允许您仅向前解析流式XML文档

您可以通过javax.xml.stream.XMLInputFactory类创建XMLEventReader。尝试运行演示代码(根据需要进行更改),您可以看到所需的对象

XMLInputFactory factory = XMLInputFactory.newInstance();

//get Reader connected to XML input from somewhere..
Reader reader = getXmlReader();

try {

    XMLEventReader eventReader =
    factory.createXMLEventReader(reader);

} catch (XMLStreamException e) {
    e.printStackTrace();
}
现在,使用此eventReader获得所需的内容…对其进行迭代,请参见调试模式中的

while(eventReader.hasNext()){
   // this is what you want...
    XMLEvent event = eventReader.nextEvent();

    if(event.getEventType() == XMLStreamConstants.START_ELEMENT){
        StartElement startElement = event.asStartElement();
        System.out.println(startElement.getName().getLocalPart());
    }
    //handle more event types here...
}

您是否尝试过研究如何使用XPath?您完全改变了问题?您是否尝试过研究如何使用XPath?您完全改变了问题?