簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM