我有一个包含两种元素类型的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)的新手,我只是不知道为什么会这样设置。
有没有办法通过指定名称来获取节点的值,而不必遍历每个节点?
答案 0 :(得分:1)
在处理文件之前,请考虑将文件转换为更卫生的文件。一个简单的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>
这样做的好处是文档的所有后续处理都变得更加容易。