2014-03-18 43 views
-1

我有我不得不解析我找回一些数据的复杂的XML字符串,这里是内容:Java的XML解析与很多层面

<root1> 
    <root2> 
     <A>something</A> 
     <B>something</B> 
     <C> 
      <D> 
       <GetE>DataE</GetE> 
       <GetF>DataF</GetF> 
       <G>something</G> 
       <H>something</H> 
       <I> 
        <J> 
         <GetK>DataK</GetK> 
         <GetL>DataL</GetL> 
        </J> 
       </I> 
      </D> 
      <D> 
       <GetE>DataE</GetE> 
       <GetF>DataF</GetF> 
       <G>something</G> 
       <H>something</H> 
       <I> 
        <J> 
         <GetK>DataK</GetK> 
         <GetL>DataL</GetL> 
        </J> 
       </I> 
      </D> 
     </C> 
    </root2> 
</root1> 

我想打印的GetE内容,GetFGetKGetL

例如:

格特= DataE,GETF = DATAF,GetK = DATAK,GetL = DATAL

格特= DataE,GETF = DATAF,GetK = DATAK,GetL = DATAL

...

要我的字符串数据转换为XML,我用这个功能In Java, how do I parse XML as a String instead of a file?

任何想法吗?

+0

您的意思是您想要选择具有这些名称的所有节点,例如在XPath表达式中? –

+0

你是什么意思“多根”?该文档与任何XML文档一样,没有多个根元素;这就是使根元素成为根元素的原因。 – chrylis

+0

我想举个例子:DataE,DataF,DataK,DataL,@chrylis:我会说多个级别..这是一个错误 – zeomega

回答

0

首先,检查this answer这是更适用于您的情况。 XPath是一种方便且易于使用的技术来提取您所寻求的信息,但性能要求可能会另行规定。

的XPath表达式,你的情况,会是这样,例如::

"root1/root2/C/D/GetE/text()" 
"root1/root2/C/D/GetF/text()" 

但是,正如其他人评论说,中 “root1 /根-2/C/d /格特” 不返回单个节点,所以你必须决定你将如何代表信息。

0

也许有一种更简单的方法,但SAXParser会完成这项工作。