我有一个具有两种元素类型的XML文档。一个仅具有属性的元素类型,另一个仅包含第一个属性的元素类型。
<TagList name="Results">
<Tag name="type_of_identifier" value="idvalue"/>
<Tag name="some_other_identifier" value="otheridvalue"/>
....
<Tag name="type" value="asdfaf"/>
<TagList name="SubList">
<Tag name="param1" value="value1"/>
<Tag name="param2" value="value2"/>
</TagList>
</TagList>
我是XML(也是Java)的新手,但是为什么要用这种方式来设置它却茫然不知所措。
有没有一种方法可以通过指定名称来获取节点的值,而不必遍历每个节点?
最佳答案
在处理文件之前,请考虑将文件转换为更卫生的文件。具有两个模板规则的简单XSLT样式表:
<xsl:template match="TagList">
<xsl:element name="{@name}">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
<xsl:template match="Tag">
<xsl:element name="{@name}">
<xsl:value-of select="@value"/>
</xsl:element>
</xsl:template>
会将其转换为如下形式:
<Results>
<type_of_identifier>idvalue</type_of_identfier>
<some_other_identifier>otheridvalue<some_other_identifier/>
....
<type>asdfaf</type>
<SubList>
<param1>value1</param1>
<param2>value2</param2>
</SubList>
</Results>
这样做的好处是使文档的所有后续处理变得更加容易。