백엔드 개발 PHP 튜토리얼 在PHP5中使用DOM控制XML_PHP教程

在PHP5中使用DOM控制XML_PHP教程

Jul 13, 2016 pm 05:32 PM
dom php php5 xml 주류 사용 존재하다 향상시키다 개발하다 제어 표준화 지금 언어 십자가

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 (标准化越来越近了) 操作的能耐。这些函数作为...
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드 Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드 Dec 24, 2024 pm 04:42 PM

Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드

CakePHP 날짜 및 시간 CakePHP 날짜 및 시간 Sep 10, 2024 pm 05:27 PM

CakePHP 날짜 및 시간

CakePHP 프로젝트 구성 CakePHP 프로젝트 구성 Sep 10, 2024 pm 05:25 PM

CakePHP 프로젝트 구성

CakePHP 파일 업로드 CakePHP 파일 업로드 Sep 10, 2024 pm 05:27 PM

CakePHP 파일 업로드

CakePHP 라우팅 CakePHP 라우팅 Sep 10, 2024 pm 05:25 PM

CakePHP 라우팅

CakePHP 토론 CakePHP 토론 Sep 10, 2024 pm 05:28 PM

CakePHP 토론

CakePHP 빠른 가이드 CakePHP 빠른 가이드 Sep 10, 2024 pm 05:27 PM

CakePHP 빠른 가이드

PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법 PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법 Dec 20, 2024 am 11:31 AM

PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법

See all articles