Java 解析标记名不固定的XML
解析标记名固定的XML很容易。在XStream中,我们可以简单地使用@xstreamaliastgname注释。但是如何解析标记名不固定的XML。假设我有以下XML:Java 解析标记名不固定的XML,java,xml,xml-parsing,xstream,Java,Xml,Xml Parsing,Xstream,解析标记名固定的XML很容易。在XStream中,我们可以简单地使用@xstreamaliastgname注释。但是如何解析标记名不固定的XML。假设我有以下XML: <result> <result1> <fixed1> ... </fixed1> <fixed2> ... </fixed2> </result1> <result2> <item>
<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>
标签名美国和西班牙是不固定的,有时我可能会得到其他标签名,如德国,印度等
在这种情况下,如何为标记result2定义pojo?如果事先不知道标记名,有没有办法告诉XStream接受任何东西作为别名 如果可以使用Xpath从标记本身字段“name”中获取标记,则可以执行以下操作:
//result2/*/name/text()
另一种选择是使用整个元素,如:
//result2/*
或者:
//result2/*/name()
一些技术,特别是数据绑定方法,针对处理在编译时结构已知的XML进行了优化。其他类似DOM和其他类似DOM的树模型(JDOM、XOM等)是为处理结构未知的XML而设计的。使用该工具进行作业
XSLT和XQuery尝试将两者混合。在模式感知形式中,当静态结构信息可用时,它们可以利用静态结构信息。但更常见的是,它们是在非类型化模式下运行的,在这种模式下,没有元素名称或结构的先验知识,一切都按原样处理。基于XSLT规则的处理范式特别适合于内容不可预测或可变的半结构化XML。本例中的标记名称应该是country。这太愚蠢了。我不是说这是你的错是的。我从另一个聚会上得到这个。所以不能更改它。当然可以更改它,编写xslt以转换为不那么疯狂的东西。只需阅读以下内容:以及此处简要解释的规则:在最后一个链接中,您还可以评估您的模式