解析标签名称不固定的XML
解析标签名称固定的XML很容易。在XStream中,我们可以简单地使用@XStreamAlias("tagname")
注释。但是如何解析标签名称不固定的XML。假设我有以下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>
标记名称America
和Spain
是不固定的,有时候我可能会像德国,印度等其他标记名称
如何在这种情况下定义为POJO标签result2
?有没有办法告诉XStream
接受什么作为别名,如果标签名称是事先不知道的?
,如果它是确定你获得从标签本身内部的标签(场“名”),使用XPath,你可以这样做:
//result2/*/name/text()
另一种选择是使用整个元素,像:
//result2/*
,或者也:
//result2/*/name()
你能解释更多或者一些代码片段吗? –
刚刚阅读:https://*.com/questions/2811001/how-to-read-xml-using-xpath-in-java和规则,在这里简短地解释:https://www.freeformatter.com/ xpath-tester.html在这最后一个链接中,你也可以评估你的模式 – marco
一些技术(具体地,数据绑定方法)是为优化处理XML的结构在编译时已知。其他(如DOM和其他类似DOM的树模型 - JDOM,XOM等)是专为处理其结构未知的XML而设计的。使用该工具进行这项工作。
XSLT和XQuery试图融合两者。在他们的模式感知形式中,他们可以在可用时利用静态结构信息。但更通常的是,它们以“无类型”模式运行,没有关于元素名称或结构的先验知识,并且所有事情都按照它的处理方式进行处理。基于XSLT规则的处理范例特别适合于内容不可预测或可变的“半结构化”XML。
在这种情况下的标签名称应该确实是国家。这只是愚蠢的。 (我不是说这是你的错) –
是的。我从另一方得到这个。所以不能改变它。 –
当然你可以改变它,写入xslt转换为更疯狂的东西。 –