使用PHP解析XML以获取属性值?

时间:2015-03-23 14:13:42

标签: php xml parsing attributes nodes

我正在尝试使用PHP解析XML文件以查找属性值。

XML如下所示( example.xml ):

<?xml version="1.0" encoding="UTF-16" standalone="yes"?>
<xryfile XRYVersion="6.11.1.0">
<images>
<image type="PHYSICAL" id="0" version="6.11.1">
  <views>
    <view type="location_history_view">
      <nodes>
        <node>
          <properties>
            <property type="application">Facebook Messenger</property>
            <property type="longitude">-1.000000</property>
            <property type="latitude">1.000000</property>
          </properties>
        </node>
      </nodes>
    </view>
  </views>
</image>
</images>
</xryfile>

我希望提取&#34;属性&#34;的值。节点,但我不确定用于提取此信息的语法。

我尝试过以下代码:

<?php

$xml = simplexml_load_file('example.xml');



foreach($xml->property[0]->attributes() as $a) {
echo $a;
}
?>

如果节点说:

,我可以解决如何轻松提取节点的问题
<property>Facebook Messenger</property>

但是,如果出现这样的情况,我无法解决如何提取属性值的问题:

<property type="application">Facebook Messenger</property>

我非常感谢这个问题的一些帮助,因为我已经被困了一段时间。

提前致谢:)

3 个答案:

答案 0 :(得分:2)

试试这个:

foreach($xml->property AS $property) {
   if(isset($property['type'])){
     $a = $property['type'];
     echo $a;
   }
}

答案 1 :(得分:2)

您是否必须使用SimpleXML?如果没有,你可以尝试使用DOMDocument。代码如下:

$dom = new DOMDocument();
$dom->preserveWhiteSpace = false;
$dom->load('example.xml');

$properties = $dom->getElementsByTagName('property');
foreach($properties AS $property)
{
    $value = $property->nodeValue;
    $type = $property->getAttribute('type');
    echo '<div>Node Information/Value :'. $value. '<br/>'. 'Node attribute:'. $type. '</div>';
}

答案 2 :(得分:2)

这回应了所有3个属性:

foreach($xml->images->image->views->view->nodes->node->properties->property as $obj){
    echo $obj->attributes()->type."<br/>";
}

结果:

application
longitude
latitude