[英]How to parse xml and get the corresponding values using Stax Iterator ?
[英]How to parse XML in java to save values in db using STAX?
我是JAVA STAX Parser的新手,我必須解析一個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 ?
Java StAX中的XMLEventReader類是一個基於迭代器的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來獲得你想要的東西......迭代它,看看調試模式,
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...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.