以下是我的xml结构。
<City name="BELLMORE" >
<SiteName name="MILL POND AUTO BODY" >
<SiteStreet>3000 Merrick Rd</SiteStreet>
<ZipCode>11710</ZipCode>
</SiteName>
<SiteName name="STS TIRE & AUTO CENTERS" >
<SiteStreet>CHG Sunrise Hwy</SiteStreet>
<ZipCode>11710</ZipCode>
</SiteName>
<SiteName name="AUTO CONNECTION" >
<SiteStreet>2860 Sunrise Hwy</SiteStreet>
<ZipCode>11710</ZipCode>
</SiteName>
<SiteName name="PERRY'S AUTO" >
<SiteStreet>1703 Newbridge Rd</SiteStreet>
<ZipCode>11710</ZipCode>
</SiteName>
</City>
当我使用以下xpath查询时,我能够找到数据。
//City[@name='BELLMORE']/SiteName[@name='AUTO CONNECTION']/SiteStreet/text()
但是当我使用以下xpath查询时
//City[@name='BELLMORE']/SiteName[@name='PERRY'S AUTO']/SiteStreet/text()
它不返回任何东西。我已经转换了xml中的特殊字符。
答案 0 :(得分:1)
XPath会看到解析后的XML,因此您需要检查实际字符而不是字符引用:
//City[@name="BELLMORE"]/SiteName[@name="PERRY'S AUTO"]
XPath字符串文字可以用单引号或双引号分隔,如果要在文字中包含单引号字符,则必须用双引号分隔。
当你看到在用其他主机语言(如Java或XSLT)编写的源代码中使用XPath表达式的示例时,那些混淆了水域的事情是这样的,其中构成XPath表达式的字符受到引用规则的约束。主持语言。例如,Java中的上述表达式可能如下所示:
String xpath = "//City[@name=\"BELLMORE\"]/SiteName[@name=\"PERRY'S AUTO\"]";
或者在XSLT中,它可能看起来像:
<xsl:value-of select='//City[@name="BELLMORE"]/SiteName[@name="PERRY'S AUTO"]' />
<xsl:value-of select="//City[@name="BELLMORE"]/SiteName[@name="PERRY'S AUTO"]" />
表达式本身仍包含各种单引号和双引号字符,但这些字符的表示方式取决于主语言。