목차
php中的XML DOM(10),xmldom
백엔드 개발 PHP 튜토리얼 php中的XML DOM(10),xmldom_PHP教程

php中的XML DOM(10),xmldom_PHP教程

Jul 13, 2016 am 10:01 AM
dom java php xml

php中的XML DOM(10),xmldom

1.PHP DOM (1)

Php中的DOM跟javascript不一样,属性不用另外增加一个节点

2.主要类

     DOMDocument :文档类

     DOMNodeList :节点列表类

     DOMNode :节点类

     DOMElement :元素类

3. DOMDocument

  3.1创建文档对象

     DOMDocument::__construct ([ string $version [, string $encoding ]] )

     [ string $version :版本号

     [, string $encoding ]]:字符集

  3.2、加载xml文件

     mixed DOMDocument::load ( string $filename)

     string $filename:要加载的xml文件名称

  3.3、获取节点

     DOMNodeList DOMDocument::getElementsByTagName ( string name )

     String name:要获取的节点名

示例:Demo.php

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

<?<span>php

    header ( </span><span>'</span><span>Content-Type:text/html;charset=gb2312</span><span>'</span><span> );

</span><span>//</span><span> 利用php解析demo01.xml

</span><span>//</span><span> 实例化dom对象</span>

    $dom = <span>new</span><span> DOMDocument ();

</span><span>//</span><span> 加载xml文件</span>

    $dom->load ( <span>'</span><span>demo01.xml</span><span>'</span><span> );

</span><span>//</span><span> 通过dom对象获取person节点,注意:这里返回值是一个DOMNodeList类对象</span>

    $persons = $dom->getElementsByTagName ( <span>'</span><span>person</span><span>'</span><span> );

</span><span>//</span><span> 共有几个person</span>

    echo <span>'</span><span>共有</span><span>'</span> . $persons->length . <span>'</span><span>个人<br></span><span>'</span>;      <span>//</span><span>输出共有两个人

</span><span>//</span><span> 选中索引为0的person,也就是第一个人</span>

    $person = $persons->item ( <span>0</span><span> );

</span><span>//</span><span> 在这个person下获取name节点,返回的仍然是一个DOMNodeList类对象</span>

    $names = $person->getElementsByTagName ( <span>'</span><span>name</span><span>'</span><span> );   

</span><span>//</span><span> 输出姓名</span>

echo $names->item ( <span>0</span> )->nodeValue . <span>'</span><span><br></span><span>'</span>;       <span>//</span><span>输出'张三'</span>

为什么要进行两次取的Nodelist呢?请参照上图,因为有两个节点

로그인 후 복사

demo.xml

1

2

3

4

5

6

7

8

9

10

11

<?xml version=<span>"</span><span>1.0</span><span>"</span> encoding=<span>"</span><span>UTF-8</span><span>"</span>?>

<persons>

    <person id=<span>"</span><span>s101</span><span>"</span>>

        <name>zhangsan</name>

        <age><span>30</span></age>

    </person>

    <person>

        <name>wangwu</name>

        <age><span>18</span></age>

    </person>

</persons>

로그인 후 복사

4. DOMNodeList类 (上面的person就是NodeList节点)

1、Length

当前节点列表中共有几个节点

2、DOMElement DOMNodelist::item ( int $index )

选中索引为index的节点

int $index:索引

5、 DOMNode类

1、nodeValue 节点的值

6、 关于属性的读取

1、bool DOMElement::hasAttribute ( string $name )

判断是否具有某个属性(只判断某个属性下有没有)

String $name:属性名

2、bool DOMNode::hasAttributes ( void )

判断是否具有属性(只要有属性就返回true)

3、string DOMElement::getAttribute ( string $name )

获取指定属性的属性值

String $name:属性名

示例2.用连贯操作输出

1

2

3

4

5

6

7

<?<span>php

    $dom </span>= <span>new</span> DOMDocument ( <span>'</span><span>1.0</span><span>'</span>, <span>'</span><span>utf-8</span><span>'</span><span> );

    $dom</span>->load ( <span>'</span><span>demo01.xml</span><span>'</span><span> );

</span><span>//</span><span> 想得到第一个人的姓名</span>

    echo $dom->getElementsByTagName ( <span>'</span><span>person</span><span>'</span> )->item ( <span>0</span><span> )

    </span>->getElementsByTagName ( <span>'</span><span>name</span><span>'</span> )->item ( <span>0</span> )-><span>nodeValue;

输出:张三</span>

로그인 후 복사

Example3

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

<?<span>php

    header ( </span><span>'</span><span>Content-Type:text/html;charset=gb2312</span><span>'</span><span> );

    $dom </span>= <span>new</span> DOMDocument ( <span>'</span><span>1.0</span><span>'</span>, <span>'</span><span>utf-8</span><span>'</span><span> );

    $dom</span>->load ( <span>'</span><span>demo01.xml</span><span>'</span><span> );

    $person </span>= $dom->getElementsByTagName ( <span>'</span><span>person</span><span>'</span> )->item ( <span>0</span><span> );

</span><span>//</span><span> 判断节点是否具有id属性</span>

    <span>if</span> ($person->hasAttribute ( <span>'</span><span>id</span><span>'</span><span> )) {

        echo </span><span>'</span><span>具有id属性</span><span>'</span><span>;

    } </span><span>else</span><span> {

        echo </span><span>'</span><span>没有id属性</span><span>'</span><span>;

    }

    echo </span><span>'</span><span><br></span><span>'</span><span>;

</span><span>//</span><span> 判断节点是否具有属性</span>

    <span>if</span> ($person-><span>hasAttributes ()) {

        echo </span><span>'</span><span>有属性</span><span>'</span><span>;

    } </span><span>else</span><span> {

        echo </span><span>'</span><span>没有任何属性</span><span>'</span><span>;

    }

    echo </span><span>'</span><span><br></span><span>'</span><span>;

</span><span>//</span><span> 得到第一个person的id属性值</span>

    echo $person->getAttribute ( <span>'</span><span>id</span><span>'</span> );

로그인 후 복사

之前的例子只能得到一条数据,现在我想得到所有人的完整信息,该如何实现?

示例4:

php中的XML DOM(10),xmldom_PHP教程php header ( 'content-type:text/html;charset=gb2312' ); $dom = new DOMDocument ( '1.0', 'utf-8' ); $dom->load ( 'demo01.xml' ); // 得到所有person节点 $persons = $dom->getElementsByTagName ( 'person' ); // 得到总人数 $count = $persons->length; for($i = 0; $i < $count; $i ++) { // $person表示第i个人 $person = $persons->item ( $i ); echo '' . ($i + 1) . '个人的'; if ($person->hasAttribute ( 'id' )) { echo '学号:' . $person->getAttribute ( 'id' ); } echo '姓名:' . $person->getElementsByTagName ( 'name' )->item ( 0 )->nodeValue; echo '年龄:' . $person->getElementsByTagName ( 'age' )->item ( 0 )->nodeValue; echo '
'; } ?>

 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/971770.htmlTechArticlephp中的XML DOM(10),xmldom 1.PHP DOM (1) Php中的DOM跟javascript不一样,属性不用另外增加一个节点 2. 主要类 DOMDocument :文档类 DOMNodeList :节点列...
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 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 설치 및 업그레이드 가이드

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)를 설정하는 방법

PHP에서 HTML/XML을 어떻게 구문 분석하고 처리합니까? PHP에서 HTML/XML을 어떻게 구문 분석하고 처리합니까? Feb 07, 2025 am 11:57 AM

PHP에서 HTML/XML을 어떻게 구문 분석하고 처리합니까?

Java 8 Stream foreach에서 나누거나 돌아 오시겠습니까? Java 8 Stream foreach에서 나누거나 돌아 오시겠습니까? Feb 07, 2025 pm 12:09 PM

Java 8 Stream foreach에서 나누거나 돌아 오시겠습니까?

문자열로 모음을 계산하는 PHP 프로그램 문자열로 모음을 계산하는 PHP 프로그램 Feb 07, 2025 pm 12:12 PM

문자열로 모음을 계산하는 PHP 프로그램

Java Made Simple: 초보자를 위한 프로그래밍 능력 가이드 Java Made Simple: 초보자를 위한 프로그래밍 능력 가이드 Oct 11, 2024 pm 06:30 PM

Java Made Simple: 초보자를 위한 프로그래밍 능력 가이드

미래를 창조하세요: 완전 초보자를 위한 Java 프로그래밍 미래를 창조하세요: 완전 초보자를 위한 Java 프로그래밍 Oct 13, 2024 pm 01:32 PM

미래를 창조하세요: 완전 초보자를 위한 Java 프로그래밍

캡슐의 양을 찾기위한 Java 프로그램 캡슐의 양을 찾기위한 Java 프로그램 Feb 07, 2025 am 11:37 AM

캡슐의 양을 찾기위한 Java 프로그램

See all articles