XML元素类型都是相同的

时间:2014-02-25 23:07:25

标签: java xml

我有一个包含两种元素类型的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)的新手,我只是不知道为什么会这样设置。

有没有办法通过指定名称来获取节点的值,而不必遍历每个节点?

1 个答案:

答案 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>

这样做的好处是文档的所有后续处理都变得更加容易。