1

これが私がZohoCRMから持っているXMLであり、レコードが主要な連絡先の電子メールを取得する必要があります。

<!--?xml version="1.0" encoding="UTF-8" ?-->
  <response uri="/crm/private/xml/Contacts/getRelatedRecords">
     <result>
       <contacts>
        <row no="1">
           <fl val="CONTACTID">511618000000889989</fl>
           <fl val="Email">
               <!--[CDATA[person1@example.com]]-->
           </fl>
           <fl val="Primary">
               <!--[CDATA[true]]-->
           </fl>
        </row>
        <row no="2">
           <fl val="CONTACTID">511617845475451213</fl>
           <fl val="Email">
              <!--[CDATA[person2@example.com]]-->
           </fl>
           <fl val="Primary">
              <!--[CDATA[false]]-->
           </fl>
        </row>
       </contacts>
     </result>
  </response>

上記の場合、xpath式は、プライマリである人の電子メールとしてperson1@example.comを返す必要があります。

私は次のように式を書き始めました:

/response/result/contacts/row[./fl/@val='Primary' and ]/fl[@val='Email']/text()

しかし、行要素の結合された述語を書くポイントを超えることはできません。

もう1つの問題は名前空間です。このXMLには名前空間があるようです。この場合、XPATHで名前空間を処理するにはどうすればよいですか?

4

3 に答える 3

1

これは機能しますか?

//fl[@val='Primary' and contains(text(), 'true')]//preceding-sibling::fl[@val='Email']
于 2013-03-11T18:48:21.897 に答える
0

CDATAこれらのセクションが実際にコメントではなく CDATA セクションであると仮定すると、次のようになります。

/response/result/contacts/row[normalize-space(fl[@val = 'Primary]) = 'true']
                             /fl[@val = 'Email']

私の知る限り、あなたの XML は名前空間を使用していません。はuri=単なる通常の属性です。

于 2013-03-11T19:25:19.483 に答える