Rumah > pembangunan bahagian belakang > tutorial php > 在PHP5中使用DOM控制XML_PHP教程

在PHP5中使用DOM控制XML_PHP教程

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2016-07-13 17:32:04
asal
1169 orang telah melayarinya

php(做为现在的主流开发语言)5中增强了xml(标准化越来越近了)的支持,使用DOM扩展了xml(标准化越来越近了)操作的能耐。这些函数作为 php(做为现在的主流开发语言)5 核心的一部分,无需被安装即可使用。

下面的例子简单的演示了DOM对xml(标准化越来越近了)的操作,详细解释请看代码中的注释


/************************************************
**                    use xml(标准化越来越近了) in php(做为现在的主流开发语言)5
** reference site:
** http://cn.php(做为现在的主流开发语言).net/manual/zh/ref.dom.php(做为现在的主流开发语言)
** the follow codes need php(做为现在的主流开发语言)5 support
*************************************************/


//首先要创建一个DOMDocument对象
$dom = new DomDocument();
//然后载入xml(标准化越来越近了)文件
$dom -> load("test.xml(标准化越来越近了)");

//输出xml(标准化越来越近了)文件
//header("Content-type: text/xml(标准化越来越近了);charset=gb2312");
//echo $dom -> savexml(标准化越来越近了)();

//保存xml(标准化越来越近了)文件,返回值为int(文件大小,以字节为单位)
//$dom -> save("newfile.xml(标准化越来越近了)");

echo "


取得所有的title元素:
";
$titles = $dom -> getElementsByTagName("title");
foreach ($titles as $node)
{
  echo $node -> textContent . "
";
  //这样也可以
  //echo $node->firstChild->data . "
";
}

/*
echo "


从根结点遍历所有结点:
";
foreach ($dom->documentElement->childNodes as $items) {
  //如果节点是一个元素(nodeType == 1)并且名字是item就继续循环
  if ($items->nodeType == 1 && $items->nodeName == "item") {
    foreach ($items->childNodes as $titles) {
      //如果节点是一个元素,并且名字是title就打印它.
      if ($titles->nodeType == 1 && $titles->nodeName == "title") {
        print $titles->textContent . " ";
      }
    }
  }
}
*/

//使用XPath查询数据
echo "


使用XPath查询的title节点结果:
";
$xpath = new domxpath($dom);
$titles = $xpath->query("/rss/channel/item/title");
foreach ($titles as $node)
{
  echo $node->textContent."
";
}
/*
这样和使用getElementsByTagName()方法差不多,但是Xpath要强大的多
深入一点可能是这样:
/rss/channel/item[position() = 1]/title 返回第一个item元素的所有
/rss/channel/item/title[@id = 23] 返回所有含有id属性并且值为23的title
/rss/channel/&folder&/title 返回所有articles元素下面的title(译者注:&folder&代表目录深度)
*/


//向DOM中写入新数据
$item = $dom->createElement("item");
$title = $dom->createElement("title");
$titleText = $dom->createTextNode("title text");
$title->appendChild($titleText);
$item->appendChild($title);
$dom->documentElement->getElementsByTagName(channel)->item(0)->appendChild($item);

//从DOM中删除节点
//$dom->documentElement->RemoveChild($dom->documentElement->getElementsByTagName("channel")->item(0));
//或者使用xpath查询出节点再删除
//$dom->documentElement->RemoveChild($xpath->query("/rss/channel")->item(0));
//$dom->save("newfile.xml(标准化越来越近了)");

//从DOM中修改节点数据
//修改第一个title的文件
//这个地方比较笨,新创建一个节点,然后替换旧的节点。如果哪位朋友有其他好的方法请一定要告诉我

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/508732.htmlTechArticlephp (做为现在的主流开发语言) 5中增强了xml (标准化越来越近了) 的支持,使用DOM扩展了xml (标准化越来越近了) 操作的能耐。这些函数作为...
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan