2017-07-28 79 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