Jak pobrać wartość po ID w SimpleXML?

0

Witam, własnie piszę parser pliku XML za pomocą SimpleXML i napotkałem na problem. W pliku XML mam coś takiego:

<parameters>
      <p id="1">199324</p>
      <p id="2">Test 123</p>
      <p id="3">2015-05-29 11:38:38</p>
</parameters>

Jak mam za pomocą SimpleXML wyciągnąć wartości paragrafów po ID?

0

Myślę, że to Ci powinno pomóc:
http://php.net/manual/en/simplexmlelement.attributes.php

0

Nie pomogło. Dzięki attributes() mogę wyświetlać liczby 1, 2, 3 z ID. Mi chodzi o to, że podaję ID i wyświetlam, np. 199324.

1

Zapoznaj się z selektorami xpath (częściowo podobne do selektorów css), potem tylko
$xml->xpath('twoj_xpath'); i masz wybrany obiekt

1
$xml = new SimpleXMLElement(
'<parameters>
      <p id="1">199324</p>
      <p id="2">Test 123</p>
      <p id="3">2015-05-29 11:38:38</p>
</parameters>');

foreach($xml->children() as $ch) {
    foreach($ch->attributes() as $name => $value) {
        if($name == 'id' && $value == 3) {
            echo $ch; //zwraca 2015-05-29 11:38:38
        }
    }
}
0
Tumeg napisał(a):
$xml = new SimpleXMLElement(
'<parameters>
      <p id="1">199324</p>
      <p id="2">Test 123</p>
      <p id="3">2015-05-29 11:38:38</p>
</parameters>');

foreach($xml->children() as $ch) {
    foreach($ch->attributes() as $name => $value) {
        if($name == 'id' && $value == 3) {
            echo $ch; //zwraca 2015-05-29 11:38:38
        }
    }
}

To rozwiązanie jest dobre ale trochę za dużo pisania. Wybrałem sposób, który przedstawił @dzek69 Jest prostszy i szybki.

Oto rozwiązanie:

xml->xpath('p[@id="2"]');

1 użytkowników online, w tym zalogowanych: 0, gości: 1