Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml XPath查询问题_Xml_Xpath - Fatal编程技术网

Xml XPath查询问题

Xml XPath查询问题,xml,xpath,Xml,Xpath,我有以下XML文档: <places xmlns="http://where.yahooapis.com/v1/schema.rng" xmlns:yahoo="http://www.yahooapis.com/v1/base.rng" yahoo:start="0" yahoo:count="1" yahoo:total="1"> <place yahoo:uri="http://where.yahooapis.com/v1/place/23424975" xml:l

我有以下XML文档:

<places xmlns="http://where.yahooapis.com/v1/schema.rng" xmlns:yahoo="http://www.yahooapis.com/v1/base.rng" yahoo:start="0" yahoo:count="1" yahoo:total="1">
    <place yahoo:uri="http://where.yahooapis.com/v1/place/23424975" xml:lang="en-US">
        <woeid>23424975</woeid>
        <placeTypeName code="12">Country</placeTypeName>
        <name>United Kingdom</name>
        <country type="Country" code="GB">United Kingdom</country>
        <centroid>
            <latitude>54.314072</latitude>
            <longitude>-2.230010</longitude>
        </centroid>
        <boundingBox>
            <southWest>
                <latitude>49.162090</latitude>
                <longitude>-13.413930</longitude>
            </southWest>
            <northEast>
                    <latitude>60.854691</latitude>
                <longitude>1.768960</longitude>
            </northEast>
        </boundingBox>
       <areaRank>11</areaRank>
       <popRank>0</popRank>
    </place>
</places>

23424975
国家
大不列颠联合王国
大不列颠联合王国
54.314072
-2.230010
49.162090
-13.413930
60.854691
1.768960
11
0

我试图捕捉“woeid”值。但是我使用的XPath查询“/places/place/woeid”没有捕获它

有什么想法吗


谢谢。

您必须在查询中指定名称空间。如何设置名称空间取决于XPath实现。但是您必须声明
http://where.yahooapis.com/v1/schema.rng
命名空间,然后将其用于路径表达式。因此,如果您将其声明为
yahoo
,那么您的XPath表达式将类似于
/yahoo:places/yahoo:place/yahoo:woeid

或者,您的XPath实现可能允许您设置默认名称空间,在这种情况下,您的原始查询可以正常工作


请记住,由于
xmlns
属性没有名称空间前缀,因此所有包含的元素(没有用自己的名称空间覆盖)都属于该名称空间(Yahoo名称空间)。因此名称空间实际上是元素名的一部分。了解名称空间的工作方式对于使用XML非常重要。

您必须在查询中指定名称空间。如何设置名称空间取决于XPath实现。但是您必须声明
http://where.yahooapis.com/v1/schema.rng
命名空间,然后将其用于路径表达式。因此,如果您将其声明为
yahoo
,那么您的XPath表达式将类似于
/yahoo:places/yahoo:place/yahoo:woeid

或者,您的XPath实现可能允许您设置默认名称空间,在这种情况下,您的原始查询可以正常工作

请记住,由于
xmlns
属性没有名称空间前缀,因此所有包含的元素(没有用自己的名称空间覆盖)都属于该名称空间(Yahoo名称空间)。因此名称空间实际上是元素名的一部分。了解名称空间的工作方式对于使用XML非常重要。

在XPath引擎中设置名称空间和前缀(例如
a
),然后使用:

a:places/a:place/a:woeid
或者简单地说:

*[local-name() = 'places']/*[local-name() = 'place']/*[local-name() = 'woeid']
在XPath引擎中设置名称空间和前缀(例如
a
),然后使用:

a:places/a:place/a:woeid
或者简单地说:

*[local-name() = 'places']/*[local-name() = 'place']/*[local-name() = 'woeid']