如何在java中解析XML以使用STAX在db中保存值?
我是JavaStax解析器的新手,我必须解析xml来填充我的数据库表 在尝试使用STAX读取XML文件时,我遇到了这个问题。 在XML文件中,不同根节点中可能有同名的子节点。我不太明白如何从根节点读取特定的子节点 XML文件示例:-如何在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
<?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?您完全改变了问题?