Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.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_Xpath 1.0 - Fatal编程技术网

Xml XPath基于同级值获取值-带命名空间

Xml XPath基于同级值获取值-带命名空间,xml,xpath,xpath-1.0,Xml,Xpath,Xpath 1.0,有很多答案都没有涉及名称空间,但我在名称空间方面遇到了问题 以下是xml文档: <GetServiceRequestDetailsResponse xmlns="http://lcc.catscrm"> <GetServiceRequestDetailsResult xmlns:a="http://schemas.datacontract.org/2004/07/LCC.CATS.CRM.WCF.Model" xmlns:i="http://www.w3.org/2001/XM

有很多答案都没有涉及名称空间,但我在名称空间方面遇到了问题

以下是xml文档:

<GetServiceRequestDetailsResponse xmlns="http://lcc.catscrm">
<GetServiceRequestDetailsResult xmlns:a="http://schemas.datacontract.org/2004/07/LCC.CATS.CRM.WCF.Model" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
    <a:AltRefs>
        <a:AltRefModel>
            <a:Name>UTRN</a:Name>
            <a:TypeId>7577</a:TypeId>
            <a:Value>9024930</a:Value>
        </a:AltRefModel>
    </a:AltRefs>
    <a:Customer>
        <a:Address>
            <a:Address1>5</a:Address1>
            <a:Address2>Random</a:Address2>
            <a:County>West Yorks</a:County>
            <a:NumberName>5</a:NumberName>
            <a:Postcode>L1</a:Postcode>
            <a:TownCity>London</a:TownCity>
            <a:UPRN i:nil="true"/>
        </a:Address>
        <a:AltRefs/>
        <a:ContactTransports>
            <a:ContactTransport>
                <a:Name>MobileNumber</a:Name>
                <a:TypeId>3</a:TypeId>
                <a:Value>08965</a:Value>
            </a:ContactTransport>
            <a:ContactTransport>
                <a:Name>Email</a:Name>
                <a:TypeId>1</a:TypeId>
                <a:Value>a@b.com</a:Value>
            </a:ContactTransport>
        </a:ContactTransports>
        <a:CustomerUPRN i:nil="true"/>
        <a:FirstName>Rob</a:FirstName>
        <a:Id i:nil="true"/>
        <a:LastName>Bowman</a:LastName>
    </a:Customer>
</GetServiceRequestDetailsResult>

UTRN
7577
9024930
5.
随机的
西约克
5.
L1
伦敦
移动电话
3.
08965
电子邮件
1.
a@b.com
抢劫
鲍曼

我需要获取/ContractTransport/Name='Email'所在的/ContractTransport/Value

下面的xpath让我访问ContactTransport
/*[local-name()='GetServiceRequestDetailsResponse']/*[local-name()='GetServiceRequestDetailsResult']/*[local-name()='Customer']/*[local-name()='ContactTransports']/*[local-name()='ContactTransport']

如果没有名称空间,那么我想我可以用[Name='Email]/*[local-Name()='Value']作为后缀,但现在不行。

您可以添加

/*[local-name()="Value" and preceding-sibling::*[local-name()="Name" and .="Email"]]

要获取所需的输出,这可能不是最优雅的选择,但这里有一个:

//*[local-name()='ContactTransport']/*[local-name()='Value' and ../*[local-name()='Name' and text()='Email']]
这将选择
ContactTransport
下的所有
Value
元素,这些元素的
Name
文本为
Email