PHP nasıl XPath belirli bir düğümün öznitelik dayalı tüm ebeveynlik öğeleri seçmek istiyorsun?

1 Cevap php

AakashM sayesinde, o bana doğru yönde yol açtı. Aşağıdaki soru için, bu bana doğru öncülük xPath ifadesidir:

"//channel/item[category[@domain='http://www.somelink.com/?category=4']]"

Original post:

Böyle bir şey (alıntı) görünen bir XML beslemesi:

<channel>
  <title>Channel Name</title>
  <link>Link to the channel</link>

    <item>
      <title>Heading 1</title>
      <link>http://www.somelink.com?id=100</link>
      <description><![CDATA[ Text here ]]></description>
      <publishDate>Fri, 03 Apr 2009 10:00:00</publishDate>
      <guid>http://www.somelink.com/read-story-100</guid>
      <category domain="http://www.somelink.com/?category=4">Category 1</category>
    </item>

    <item>
      <title>Heading 2</title>
      <link>http://www.somelink.com?id=110</link>
      <description><![CDATA[ Text here ]]></description>
      <publishDate>Fri, 03 Apr 2009 11:00:00</publishDate>
      <guid>http://www.somelink.com/read-story-110</guid>
      <category domain="http://www.somelink.com/?category=4">Category 1</category>
    </item>

  <channel>

İşte bunun kabaca. PHP (alıntı) bu parça kullanıyorum:

$xml = simple_xml_load_file($xmlFile);
$xml->xpath($pattern);

Şimdi kategorisinde düğüm o sinir bozucu "etki alanı" öznitelik dayalı (çocuklarıyla birlikte) tüm MADDE-düğümleri almak istiyorum, ama no matter what I try it does-not-work.

The closest I got was "//category[@domain= 'http://www.somelink.com/?category=4']"

Denedim ifadesi bana bu sonucu verdi:

 [0] => SimpleXMLElement Object
        (
            [@attributes] => Array
                (
                    [domain] => http://www.somelink.com/?category=4
                )

            [0] => Category 1

 [1] => SimpleXMLElement Object
        (
            [@attributes] => Array
                (
                    [domain] => http://www.somelink.com/?category=4
                )

            [0] => Category 1

Ifadesi örnekte iki öğelerin her evladımız içermelidir, ancak kategori düğüm sadece bilgi mevcut gördüğünüz gibi, ben her öğe düğümleri istiyorum.

Herhangi bir yardım son derece mutluluk duyacağız.

1 Cevap

(Eğer xml emin yapısı için biliyorum // Dene ve kullanmaktan kaçının)

Yani istediğiniz sırayla belirli bir değere sahip bir domain özniteliği olan bir category çocuk düğümü tüm item düğümleri:

/channel/item[category[@domain='http://www.somelink.com/?category=4']]