php读取xml节点有关问题,php解析xml数据

发布时间:2023-01-08

本文目录一览:

  1. getelementsbytagname,Php怎么读取xml中指定节点的指定名称的属
  2. php 获取xml某个节点的所有内容
  3. php 读取 xml 文件属性值的问题
  4. PHP读取XML节点问题

getelementsbytagname,Php怎么读取xml中指定节点的指定名称的属

首先,你的xml文件,缺少root元素,version后边没有"结尾。 然后是你解析的思路是: 先用simplexml_load_string或者$xml = simplexml_load_file('test.xml');,读取xml,然后用get_object_vars转成数组,然后根据数组,找出对应关系,或者在生成数组的时候直接写成'lisan'='no';这个关系。简单点就是直接读成数组,然后遍历,找到对应的值之间的关系就OK。 用到的函数:

function getXmlData ($strXml) {
    $pos = strpos($strXml, 'xml');
    if ($pos) {
        $xmlCode=simplexml_load_string($strXml,'SimpleXMLElement', LIBXML_NOCDATA);
        $arrayCode=get_object_vars_final($xmlCode);
        return $arrayCode ;
    } else {
        return '';
    }
}
function get_object_vars_final ($obj)
{
    if (is_object($obj)) {
        $obj = get_object_vars($obj);
    }
    if (is_array($obj)) {
        foreach ($obj as $key => $value) {
            $obj[$key] = get_object_vars_final($value);
        }
    }
    return $obj;
}

php 获取xml某个节点的所有内容

php是可以读取读取xml文件的。同时也可以遍历节点。网上有很多方法。你可以百度下。这里给你贴代码的话有很多代码。 举例:有个名字为a.xml的文件。内容为:

<?xml version="1.0" encoding="gb2312"?>
<xml>
    <list>111</list>
    <list>2222</list>
    <list>3333</list>
</xml>

读取:

<?php
$xml = new DOMDocument();
$xml->load('a.xml');
foreach($xml->getElementsByTagName('list') as $list)
{
    $value = $list->firstChild->nodeValue;
    echo $value."<br />";
}
?>

输出为:

111
222
333

php 读取 xml 文件属性值的问题

粗略看了看你的conf.xml文件,第一个message节点没有闭合; 获取某个元素的值,或者属性值很多,不知道你具体的需求。 示例如下:

<?php
//加载xml文件
$test=simplexml_load_file("conf.xml");
//取出所有信息
$messages=$test->message;
//取出第二个message节点的所有的第二个property节点
$property2=$messages[1]->property[1];
echo $property2["name"]." = ".$property2;
//取出第二个message节点的所有的第三个property节点
$property3=$messages[1]->property[2];
echo "<br/>";
echo $property3["name"]." = ".$property3;
?>

PHP读取XML节点问题

假定这个xml是一个字串 $xml

$xml = new SimpleXMLElement($xml);
$autoPlay = $xml->attributes()->autoPlay;
$autoNextSong = $xml->attributes()->autoNextSong;

这样你获取的会是两个对象。如果需要用来做某些特定的事情,比如显示:

echo (string)$autoPlay;