xPath帮助 - 选择兄弟姐妹

时间:2016-11-30 19:34:38

标签: xml xpath

我试图选择元素的子文本" value"单个"形式"其ID与tblXDAP-txtfXdapType - 1匹配。

这是我的XML样本

<form xsi:type="ns1:FormElement">
    <ID xsi:type="soapenc:string">tblXDAP-txtfXdapType--1</ID>
    <label xsi:type="soapenc:string">XDAP Type</label>
    <labelValue xsi:nil="true" xsi:type="soapenc:string"/>
    <type xsi:type="xsd:int">0</type>
    <value xsi:type="soapenc:string">Win7 x64 Developer</value>
</form>
<form xsi:type="ns1:FormElement">
    <ID xsi:type="soapenc:string">tblXDAP-txtfXdapUser--1</ID>
    <label xsi:type="soapenc:string">User</label>
    <labelValue xsi:nil="true" xsi:type="soapenc:string"/>
    <type xsi:type="xsd:int">0</type>
    <value xsi:type="soapenc:string"/>
</form>
<form xsi:type="ns1:FormElement">
    <ID xsi:type="soapenc:string">tblXDAP-txtfXdapType--2</ID>
    <label xsi:type="soapenc:string">XDAP Type</label>
    <labelValue xsi:nil="true" xsi:type="soapenc:string"/>
    <type xsi:type="xsd:int">0</type>
    <value xsi:type="soapenc:string">Win7 x86 Standard</value>
</form>

我使用的是xPath //*[local-name()='form'][*[local-name()='ID'][starts-with(., 'tblXDAP-txtfXdapType--1')]],但我无法从此查询中选择值。在我的例子中,我想选择值&#34; Win7 x64 Developer&#34;

1 个答案:

答案 0 :(得分:0)

假设XML片段是具有单个根元素的格式良好的XML的一部分,

<?xml version="1.0" encoding="UTF-8"?>
<r xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  
  <form xsi:type="ns1:FormElement"> 
    <ID xsi:type="soapenc:string">tblXDAP-txtfXdapType--1</ID>  
    <label xsi:type="soapenc:string">XDAP Type</label>  
    <labelValue xsi:nil="true" xsi:type="soapenc:string"/>  
    <type xsi:type="xsd:int">0</type>  
    <value xsi:type="soapenc:string">Win7 x64 Developer</value> 
  </form>  
  <form xsi:type="ns1:FormElement"> 
    <ID xsi:type="soapenc:string">tblXDAP-txtfXdapUser--1</ID>  
    <label xsi:type="soapenc:string">User</label>  
    <labelValue xsi:nil="true" xsi:type="soapenc:string"/>  
    <type xsi:type="xsd:int">0</type>  
    <value xsi:type="soapenc:string"/> 
  </form>  
  <form xsi:type="ns1:FormElement"> 
    <ID xsi:type="soapenc:string">tblXDAP-txtfXdapType--2</ID>  
    <label xsi:type="soapenc:string">XDAP Type</label>  
    <labelValue xsi:nil="true" xsi:type="soapenc:string"/>  
    <type xsi:type="xsd:int">0</type>  
    <value xsi:type="soapenc:string">Win7 x86 Standard</value> 
  </form> 
</r>

然后是这个XPath,

string(//form[ID = 'tblXDAP-txtfXdapType--1']/value)

将选择value的{​​{1}}元素的字符串值,form符合指定,

ID
根据要求