php经典实例-笔记6-xml

1、通过DOM生成XML
通过DOM扩展来创建一个DOMDocument对象,在建立了文档后,调用DOMDocument::svae()或DOMDocument::saveXML()方法生成一个格式良好的XML文档。
遵循的模式就是:创建一个元素或者文本节点对象,添加或设置想要的属性,然后添加到所属的位置上。

$dom = new DOMDocument('1.0','UTF-8');
$book = $dom->appendChild($dom->createElement('book','pan\'s book'));
$title = $book->appendChild($dom->createElement($key));
$title->appendChild($dom->createTextNode($value));
$title->setAttribute('cover', 'soft');

$author = $book->appendChild($dom->createElement('author'));
$author->appendChild($dom->createTextNode('pan'));

$date = $book->appendChild($dom->createElement('date'));
$date->appendChild($dom->createTextNode('2015-10-1'));
$dom->saveXML();

。首先是创建一个新文档对象,并可传递一个XML版本号和编码;
。再就是创建一个属于新文档的新节点,节点在被添加之前是不会被加入到文档树中的;
。所有的节点都是通过调用$dom对象创建的,在创建节点后,可以把该节点添加到树中的任何位置上,调用appendChild()方法的那个元素决定了节点在树中所处的位置;
。要在节点中添加文本内容,可以调用createTextNode()创建一个文本,然后将这个文本添加到节点中;
。要为节点添加属性,可以早节点上调用setAttribute()方法,并传递属性的名和值作为参数;
。完成之后,可以把文档作为字符串输出(saveXML()),也可以输出到为一个文件(save($file))。
。控制输出的格式良好的文档:$dom->formatOutput=true;

2、解析基本的XML文档 — SimpleXML
SimpleXML把元素转换成对象属性,位于标签之间的文本被指定给属性。如果同一个标签有多个同名元素,则这些元素的值将被放在一个列表中返回。
元素的属性会被转换为数组结构,其中数组的键时属性名,键的值就是属性的值。
缺点:必须事先知道XML文件的格式;不能访问处理指令或注释。
解析:

$bookss = simplexml_load_file('a.xml');
var_dump($bookss->book[1]->title); //等价于var_dump($bookss->{'book'}[1]->title);

修改:

$xml = simplexml_load_file('a.xml');
$xml->book[0]->title = 'js';
$xml->asXML('b.xml');

添加:

$character = $movies->movie[0]->characters->addChild('character');
$character->addChild('name', 'Mr. Parser');
$character->addChild('actor', 'John Doe');

$rating = $movies->movie[0]->addChild('rating', 'PG');
$rating->addAttribute('type', 'mpaa');

$movies->asXML('c.xml');

补充:simplexml_load_string()  — 将xml格式的字符串转换成array数组

$string = <<<XML
<?xml version='1.0'?> 
<document>
 <title>Forty What?</title>
 <from>Joe</from>
 <to>Jane</to>
 <body>
  I know that's the answer -- but what's the question?
 </body>
</document>
XML;
$xml = simplexml_load_string($string);
print_r($xml);

3、解析复杂的XML文档 — DOM扩展
能够在不知道xml格式的情况下分析xml,还能处理xml高级特性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值