使用PHP解析XML得到属性值?
Using PHP to Parse XML to get Attribute values?
我正在尝试使用 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>
我希望提取 "property" 节点的值,但我不确定用于提取此信息的语法。
我试过以下代码:
<?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>
非常感谢能为我解决这个问题提供帮助,因为我已经被困了一段时间了。
提前致谢:)
试试这个:
foreach($xml->property AS $property) {
if(isset($property['type'])){
$a = $property['type'];
echo $a;
}
}
您是否有必须使用 SimpleXML 的特殊原因?如果 none,您可以尝试使用 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>';
}
这与所有 3 个属性相呼应:
foreach($xml->images->image->views->view->nodes->node->properties->property as $obj){
echo $obj->attributes()->type."<br/>";
}
结果:
application
longitude
latitude
我正在尝试使用 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>
我希望提取 "property" 节点的值,但我不确定用于提取此信息的语法。
我试过以下代码:
<?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>
非常感谢能为我解决这个问题提供帮助,因为我已经被困了一段时间了。
提前致谢:)
试试这个:
foreach($xml->property AS $property) {
if(isset($property['type'])){
$a = $property['type'];
echo $a;
}
}
您是否有必须使用 SimpleXML 的特殊原因?如果 none,您可以尝试使用 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>';
}
这与所有 3 个属性相呼应:
foreach($xml->images->image->views->view->nodes->node->properties->property as $obj){
echo $obj->attributes()->type."<br/>";
}
结果:
application
longitude
latitude