2017-07-28 65 views
3

我有一個.xml文件,如下圖所示:爪哇 - 解析嵌套的XML文件,並寫入文件

<?xml version="1.0"?> 
    <Event> 
    <Issue>ggg</Issue> 
    <City>Athen</City> 
     <Group> 
     <AlternateIdentification> 
     <AlternateID>DG800</AlternateID> 
     <AlternateIDType>GoA</AlternateIDType> 
     </AlternateIdentification> 
     <AlternateIdentification> 
     <AlternateID>SS500</AlternateID> 
     <AlternateIDType>SDD</AlternateIDType> 
     </AlternateIdentification> 
     <AlternateIdentification> 
     <AlternateID>TY158</AlternateID> 
     <AlternateIDType>YTU</AlternateIDType> 
     </AlternateIdentification> 
     </Group> 
    </Event> 

而且我想解析.xml文件,並寫入輸出與平.txt文件線路是這樣的:

ggg Athen DG800 
ggg Athen SS500 
ggg Athen TY158 

你能幫助我,告訴我如何與使用javax DOM解析器這樣做呢?我不知道如何開始:(這個公共部分混淆了我最,因爲我需要遍歷這個文件在這種情況下,3次獲得3倍「ggg Athen」,然後附加標籤AlternateID

+0

您可以使用更復雜的XML庫,如GSON或Jac kson的任務? –

+0

如果沒有,那麼[Java教程XML-> DOM](https://docs.oracle.com/javase/tutorial/jaxp/dom/readingXML.html)是一個很好的起點。 –

+0

但是你想在哪個文件中寫輸出?在另一個文件中,我假設? – davidxxx

回答

0

你一定要看看。薩克斯XML解析器教程,可以發現here

好運

+0

但是如何用javax DOM解析器做到這一點? – EdXX

2

爪哇 - 解析嵌套的XML文件,並寫入文件

一個簡單的方法:

  1. 讀一行一行與BufferedReader.readLine()直到找到嵌套的XML部分的開始。
    例如:<?xml version="1.0"?>

  2. 當你確定這條線,添加的每個讀入StringBuilder實例線,直到你遇到,你要分析的XML部分的結束。例如它的根元素的結束標記。
    這裏:</Event>

  3. 從包含在StringBuilderString創建org.w3c.dom.Document

    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();
    Document document = builder.parse(new InputSource(new StringReader(stringBuilder.toString())));

  4. 使用首選的方式找到文檔中的數據:DOM,JDOM的XPath等...

+0

我甚至不知道你的答案中的第一點:( 一行一行地讀取,直到嵌套的xml部分的開始。例如<?xml version =「1.0」?> ??這是xml文件的開始不僅嵌套部分 – EdXX

+0

啊我雖然你已經在你的xml中嵌套xml ...它應該更容易。 – davidxxx