详解php解析xml用法
重点考察:simplexml_load_string()函数解析xml
php xml示例一:
<?php
$url='ccccc/aaac/xxxx.xml'
$xml = file_get_contents($url);
$result = simplexml_load_string($xml);
var_dump($result); //可以打印看看结果如何
foreach($result->children() as $child) //获取XML对象里面的每一个子节点,也是一个类似于数组的对象
{
echo $child->name."<br>";
echo $child->address."<br>;
}
?>
php xml示例二:
$xmlStr='sdasd/dfdxza/xedfr.xml';
loadXML($xmlStr);
$xml = simplexml_import_dom($dom);
echo $xml ->members[0]->member[0]->name; // aaa
echo $xml ->members[1]->member[0]->name; // 111
echo "";
/**
循环列出 第一个 members 的 name;
**/
foreach($xml ->members[0] as $v)
{
echo $v->name."";
}
?>
php xml示例三:PHP如何处理如下 XML
example.xml文件内容如下:
<?xml version="1.0" encoding="utf-8"?>
<phplamp>
<post>
<title id="1">PHP 我是xml测试一</title>
<details>我是xml测试一</details>
</post>
<post>
<title id="2">PHP 我是xml测试二</title>
<details>我是xml测试二</details>
</post>
<post>
<title id="3">PHP 我是xml测试三</title>
<details>我是xml测试三</details>
</post>
</phplamp>
PHP处理代码:
<?php
$xml = simplexml_load_file("example.xml");
foreach ($xml as $key => $value) {
// 获取属性
$attr = $value->title->attributes();
echo "Id: " . $attr['id'] . "<br />";
echo "Title: " . $value->title . "<br />";
echo "Details: " . $value->details . "<br /><br />";
}
?>
php xml示例四:PHP对xml数据操作
data.xml文档内容如下:
<?xml version="1.0"?>
<videos>
<video img="a" url="1" title="1" nickname="1" tag="1" vid="1" star="1"/>
<video img="b" url="2" title="2" nickname="2" tag="2" vid="2" star="2"/>
<video img="c" url="3" title="3" nickname="3" tag="3" vid="3" star="3"/>
<video title="d" src="2" img="1"/>
</videos>
<?php
//读取xml
$dom=new DOMDocument('1.0');
$dom->load('data.xml');
$em=$dom->getElementsByTagName('videos');//最外层节点
$em=$em->item(0);
$items=$em->getElementsByTagName('video');//节点
//如果不用读取直接添加的话把下面这一段去掉即可
foreach($items as $a){
foreach($a->attributes as $b){//$b->nodeValue;节点属性的值$b->nodeName;节点属性的名称
echo $b->nodeName;
echo ":";
echo $b->nodeValue;
echo "<br/>";
}
}
//下面是往xml写入一行新的
$t=$dom->createElement('video');//<video
$t->setAttribute('title','1');//<video name="data"
$t->setAttribute('src','2');//<video name="data" src="2"
$t->setAttribute('img','1');//<video name="data" img="1"
$em->appendChild($t);//<video name="data" img="1"/>
$dom->save('data.xml');
?>
//下面这一个文件是后改的可以修改xml
<?php
$doc = new DOMDocument();
$doc->load('data.xml');
//查找 videos 节点
$root = $doc->getElementsByTagName('videos');
//第一个 videos 节点
$root = $root->item(0);
//查找 videos 节点下的 video 节点
$userid = $root->getElementsByTagName('video');
//遍历所有 video 节点
foreach ($userid as $rootdata)
{
//遍历每一个 video 节点所有属性
foreach ($rootdata->attributes as $attrib)
{
$attribName = $attrib->nodeName; //nodeName为属性名称
$attribValue = $attrib->nodeValue; //nodeValue为属性内容
//查找属性名称为ip的节点内容
if ($attribName =='img')
{
//查找属性内容为ip的节点内容
if ($attribValue =='1')
{
//将属性为img,img内容为1的修改为image;
$rootdata->setAttribute('img','image');
$doc->save('data.xml');
}
}
}
}
?>
重点考察:simplexml_load_string()函数解析xml
php xml示例一:
<?php
$url='ccccc/aaac/xxxx.xml'
$xml = file_get_contents($url);
$result = simplexml_load_string($xml);
var_dump($result); //可以打印看看结果如何
foreach($result->children() as $child) //获取XML对象里面的每一个子节点,也是一个类似于数组的对象
{
echo $child->name."<br>";
echo $child->address."<br>;
}
?>
php xml示例二:
$xmlStr='sdasd/dfdxza/xedfr.xml';
loadXML($xmlStr);
$xml = simplexml_import_dom($dom);
echo $xml ->members[0]->member[0]->name; // aaa
echo $xml ->members[1]->member[0]->name; // 111
echo "";
/**
循环列出 第一个 members 的 name;
**/
foreach($xml ->members[0] as $v)
{
echo $v->name."";
}
?>
php xml示例三:PHP如何处理如下 XML
example.xml文件内容如下:
<?xml version="1.0" encoding="utf-8"?>
<phplamp>
<post>
<title id="1">PHP 我是xml测试一</title>
<details>我是xml测试一</details>
</post>
<post>
<title id="2">PHP 我是xml测试二</title>
<details>我是xml测试二</details>
</post>
<post>
<title id="3">PHP 我是xml测试三</title>
<details>我是xml测试三</details>
</post>
</phplamp>
PHP处理代码:
<?php
$xml = simplexml_load_file("example.xml");
foreach ($xml as $key => $value) {
// 获取属性
$attr = $value->title->attributes();
echo "Id: " . $attr['id'] . "<br />";
echo "Title: " . $value->title . "<br />";
echo "Details: " . $value->details . "<br /><br />";
}
?>
php xml示例四:PHP对xml数据操作
data.xml文档内容如下:
<?xml version="1.0"?>
<videos>
<video img="a" url="1" title="1" nickname="1" tag="1" vid="1" star="1"/>
<video img="b" url="2" title="2" nickname="2" tag="2" vid="2" star="2"/>
<video img="c" url="3" title="3" nickname="3" tag="3" vid="3" star="3"/>
<video title="d" src="2" img="1"/>
</videos>
<?php
//读取xml
$dom=new DOMDocument('1.0');
$dom->load('data.xml');
$em=$dom->getElementsByTagName('videos');//最外层节点
$em=$em->item(0);
$items=$em->getElementsByTagName('video');//节点
//如果不用读取直接添加的话把下面这一段去掉即可
foreach($items as $a){
foreach($a->attributes as $b){//$b->nodeValue;节点属性的值$b->nodeName;节点属性的名称
echo $b->nodeName;
echo ":";
echo $b->nodeValue;
echo "<br/>";
}
}
//下面是往xml写入一行新的
$t=$dom->createElement('video');//<video
$t->setAttribute('title','1');//<video name="data"
$t->setAttribute('src','2');//<video name="data" src="2"
$t->setAttribute('img','1');//<video name="data" img="1"
$em->appendChild($t);//<video name="data" img="1"/>
$dom->save('data.xml');
?>
//下面这一个文件是后改的可以修改xml
<?php
$doc = new DOMDocument();
$doc->load('data.xml');
//查找 videos 节点
$root = $doc->getElementsByTagName('videos');
//第一个 videos 节点
$root = $root->item(0);
//查找 videos 节点下的 video 节点
$userid = $root->getElementsByTagName('video');
//遍历所有 video 节点
foreach ($userid as $rootdata)
{
//遍历每一个 video 节点所有属性
foreach ($rootdata->attributes as $attrib)
{
$attribName = $attrib->nodeName; //nodeName为属性名称
$attribValue = $attrib->nodeValue; //nodeValue为属性内容
//查找属性名称为ip的节点内容
if ($attribName =='img')
{
//查找属性内容为ip的节点内容
if ($attribValue =='1')
{
//将属性为img,img内容为1的修改为image;
$rootdata->setAttribute('img','image');
$doc->save('data.xml');
}
}
}
}
?>