2

我有一个 xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<response>
    <rows>
        <column account="1" name="balibid" seq="1">1</column>
        <column account="1" name="genre" seq="1">Kids</column>
        <column account="1" name="ph" seq="1">3</column>
        <column account="1" name="ph" seq="1">4</column>
        <column account="1" name="ph" seq="1">5</column>
        <column account="1" name="ph" seq="1">6</column>
        <column account="1" name="pl6" seq="1">6</column>
 </rows>
</response>

我需要列名 = 流派的 XPath。我应该使用什么?

4

3 回答 3

3

在 XPATH 查询中使用//会导致不必要的(并且可能是昂贵的)评估,这就是我开始的方式(因为它很容易),但我现在正在努力改掉这个习惯。

鉴于您提供了一个很好的、格式良好的样本。下面是两个示例 XPATH 查询:

/response/rows/column[@name="genre"]

rows/column[@name="genre"]
于 2012-05-09T09:30:16.333 回答
0

使用(对于特定提供的 XML 文档):

/*/*/*[@name = 'genre']

基于 XSLT 的验证:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="/">
     <xsl:copy-of select="/*/*/*[@name = 'genre']"/>
 </xsl:template>
</xsl:stylesheet>

当此转换应用于提供的 XML 文档时:

<response>
    <rows>
        <column account="1" name="balibid" seq="1">1</column>
        <column account="1" name="genre" seq="1">Kids</column>
        <column account="1" name="ph" seq="1">3</column>
        <column account="1" name="ph" seq="1">4</column>
        <column account="1" name="ph" seq="1">5</column>
        <column account="1" name="ph" seq="1">6</column>
        <column account="1" name="pl6" seq="1">6</column>
 </rows>
</response>

计算 XPath 表达式并将所选节点复制到输出:

<column account="1" name="genre" seq="1">Kids</column>
于 2012-05-09T13:38:02.757 回答
0

尝试这个:

//column[@name='genre']
于 2012-05-09T09:24:02.130 回答