PHP、XML-获取子节点及其属性

PHP、XML-获取子节点及其属性,php,xml,dom,codeigniter,Php,Xml,Dom,Codeigniter,如何从这个XML文件中获取所有“seat”子节点及其属性 <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" seat

如何从这个XML文件中获取所有“seat”子节点及其属性

   <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>

我有不同的座位地图,所以我想通过查询ID来获取它们 然后将所有“座位”节点及其属性分配给变量

到目前为止,我一直在使用DOM方法,但simpleXML或XPath可能会更容易,因为它确实很有用 从DOMDocumet、DOMElement、DOMNode向下钻取时会感到困惑


任何帮助都会很好,干杯

$XML=使用DOM可以轻松完成:

$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']
}
$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');
}

只有当
seatmap
是一级节点时才有效:)@Tim Cooper如何将xml文件传递给simplexmlelement类?@RIKL:
xml\u nodes=new simplexmlelement($filename,0,true)