PHP, XML - Получить дочерние узлы и их атрибуты - PullRequest
4 голосов
/ 06 февраля 2011

Как я могу получить все дочерние узлы "seat" и их атрибуты из этого XML-файла?

   <seatmap id="1">
      <seat row="A" seatnum="01" available="1" />
      <seat row="A" seatnum="02" available="1" />
      <seat row="A" seatnum="03" available="1" />
      <seat row="A" seatnum="04" available="1" />
      <seat row="A" seatnum="05" available="1" />
    </seatmap>

У меня есть разные таблицы мест, поэтому я хочу получить их, запросив идентификатор и назначив всеузлы 'seat' и их атрибуты для переменных.

До сих пор я использовал методы DOM, но, возможно, simpleXML или XPath было бы проще, так как это действительно сбивает с толку, когда вы переходите от DOMDocumet, DOMElement, DOMNode.

Любая помощь будет отличной, ура!

Ответы [ 2 ]

6 голосов
/ 06 февраля 2011
$XML = <<<XML
<parent>
   <seatmap id="1">
      <seat row="A" seatnum="01" available="1" />
      <seat row="A" seatnum="02" available="1" />
      <seat row="A" seatnum="03" available="1" />
      <seat row="A" seatnum="04" available="1" />
      <seat row="A" seatnum="05" available="1" />
    </seatmap>
</parent>
XML;

$xml_nodes = new SimpleXMLElement($XML);

$nodes = $xml_nodes->xpath('//seatmap[@id = "1"]/seat'); // Replace the ID value with whatever seatmap id you're trying to access

foreach($nodes as $seat)
{
    // You can then access: $seat['row'], $seat['seatnum'], $seat['available']
}
1 голос
/ 06 февраля 2011

Легко можно сделать с DOM:

$dom = new DOMDocument;
$dom->load('xmlfile.xml');
$xpath = new DOMXPath($dom);

$seats = $xpath->query('//seatmap[@id="1"]/seat');
if ($seats->length) {
    foreach ($seats as $seat) {
        echo "row: ".$seat->getAttribute('row').PHP_EOL;
        echo "seatnum: ".$seat->getAttribute('seatnum').PHP_EOL;
        echo "available: ".$seat->getAttribute('available').PHP_EOL;
    }
} else {
    die('seatmap not found or is empty');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...