如何在php中检索xml文件子元素值?

时间:2019-05-09 19:47:34

标签: php xml

我有一个XML文件36031P_new.xml,我试图在其中检索php中的xml子元素值。

xml文件中存在的内容片段为:

<?xml version="1.0" encoding="UTF-8"?>
<StringAssetInfo>
    <attrName>CASE_SERIES_TITLE_FRENCH</attrName>
    <attrTagName>CASE_SERIES_TITLE_FRENCH</attrTagName>
    <value>PrimeTime Politics avec Dusen</value>
</StringAssetInfo>
<StringAssetInfo>
    <attrName>CASE_SERIES_TITLE</attrName>
    <attrTagName>CASE_SERIES_TITLE</attrTagName>
    <value>PrimeTime Politics</value>
</StringAssetInfo>

我尝试使用以下 php代码,但出现错误错误:无法创建对象。

<?php
$xml=simplexml_load_file("36031P_new.xml") or die("Error: Cannot create object");
?>
<td style="width:8%;">
    <?php echo $xml->StringAssetInfo[1]->attrName . "<br>"; ?>
</td>

1 个答案:

答案 0 :(得分:1)

获得您想要的东西的方法是XPath:

$xml = simplexml_load_file('test2.xml') or die('Unable to load XML');

// Find the attrName with the desired text, then go up a level to get the parent node.
$path = $xml->xpath('//StringAssetInfo/attrName[text()="CPAC_SERIES_TITLE"]/..');

var_dump($path);

输出:

iridium:~ cwhite$ php -f bigxml.php
array(1) {
  [0]=>
  object(SimpleXMLElement)#2 (3) {
    ["attrName"]=>
    string(17) "CPAC_SERIES_TITLE"
    ["attrTagName"]=>
    string(17) "CPAC_SERIES_TITLE"
    ["value"]=>
    string(18) "PrimeTime Politics"
  }
}