解析标签名称未修复的XML

时间:2017-10-05 10:28:34

标签: java xml xml-parsing xstream

很容易解析修复了标签名称的XML。在XStream中,我们可以简单地使用@XStreamAlias("tagname")注释。但是如何解析不修复标记名称的XML。假设我有以下XML:

<result>
  <result1>
     <fixed1> ... </fixed1>
     <fixed2> ... </fixed2>
  </result1>
  <result2>
    <item>
     <America>
         <name> America </name>
         <language> English </language>
     </America>
    </item>
    <item>
     <Spain>
         <name> Spain </name>
         <language> Spanish </language>
     </Spain>
    </item> 
  </result2>
</result>

标记名称AmericaSpain不固定,有时我可能会获得其他标记名称,如德国,印度等。

在这种情况下如何为标记result2定义pojo?有没有办法告诉XStream接受任何东西作为别名如果标签名在前面是未知的?

2 个答案:

答案 0 :(得分:0)

如果你可以从标签内部获取标签(字段&#39;名称&#39;),使用Xpath,你可以这样做:

//result2/*/name/text()

另一种选择可能是使用整个元素,如:

//result2/*

或者:

//result2/*/name()

答案 1 :(得分:0)

某些技术(特别是数据绑定方法)已经过优化,可以处理XML,其结构在编译时是已知的。其他(如DOM和其他类似DOM的树模型--JDOM,XOM等)设计用于处理其结构未提前知道的XML。使用该工具进行工作。

XSLT和XQuery尝试混合两者。在其模式感知形式中,他们可以在可用时利用静态结构信息。但更常见的是,他们是在&#34;无类型&#34;模式,没有元素名称或结构的先验知识,一切都按照它来处理。基于XSLT规则的处理范例特别适合于&#34;半结构化的#34;内容不可预测或可变的XML。