gpt4 book ai didi

java - 如何在java中解析XML以使用STAX将值保存在数据库中?

转载 作者:太空宇宙 更新时间:2023-11-04 12:15:32 25 4
gpt4 key购买 nike

我是 JAVA STAX 解析器的新手,我必须解析 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>

例如:- 我必须读取 TITLEPG 根标记的 SUBJECT 标记并相应地填充数据库表。

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

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

最佳答案

XMLEventReader Java StAX 中的类是一个基于迭代器的 API,用于读取 XML 文件。它将允许您在 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 来获得你想要的东西...迭代它,在 Debug模式下查看,

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...
}

关于java - 如何在java中解析XML以使用STAX将值保存在数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39448545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com