PHP 작업 XML

高洛峰
풀어 주다: 2016-12-24 11:09:25
원래의
1758명이 탐색했습니다.

조작할 데이터

<?xml version="1.0"?>
<books>
    <book name="JavaScript: The Defiitive Guide" publisher="O&#39;Reilly Media, Inc.">
        <author>David Flanagan</author>
    </book>
    <book name="PHP anf MySQL Web Development" publisher="Perason Education">
        <author>Luke Welling</author>
        <author>Laura Thomson</author>
    </book>
    <book name="HTTP: The Defiitive Guide" publisher="O&#39;Reilly Media, Inc.">
        <author>David Courley</author>
        <author>Brian Totty</author>
    </book>
</books>
로그인 후 복사

XML의 여러 기본 개념
1. 노드: 노드는 XML을 처리할 때 많은 프로그래밍 언어에서 사용되는 노드입니다. XML에서는 요소, 속성, 네임스페이스, 주석, 텍스트 콘텐츠, 처리 명령 및 전체 문서가 노드에 속합니다. 즉, XML 문서의 각각의 독립적인 작은 부분은 노드, 즉 예, name="XXXX"도 마찬가지이며, 작성자 이름도 텍스트 노드입니다.
2. 요소: 많은 프로그래밍 언어에는 XML 처리가 있습니다. 노드는 API를 통합할 필요가 있기 때문에 노드에 대한 메서드가 너무 많지 않으며 요소는 노드의 하위 집합입니다. 간단히 말해서 와 같은 태그에는 일반적으로 요소에 대한 많은 작업 방법이 있습니다.
3. 속성: <>의 XX="OO"와 같은 항목은 모두 속성 노드입니다.
4. HTML과 마찬가지로 xml에도 언어 점유 기호가 있습니다.

PHP 작업 XML

DOMDocument 객체
저는 DOMDocument 객체를 사용하여 xml을 조작하는데, simpleXml보다 사용하는 것이 더 과학적인 느낌이 듭니다. 물론, PHP를 사용한 첫날은 순전히 개인적인 느낌입니다. DOMDocument에는 일반적으로 사용되는 몇 가지 속성과 메서드가 있습니다.

PHP 작업 XML

xml 로드

$path=$_SERVER["DOCUMENT_ROOT"].&#39;/books.xml&#39;;
    $books=new DOMDocument();
    $books->load($path);
로그인 후 복사

노드 및 속성 읽기/트래버스

$bookElements=$books->getElementsByTagName(&#39;book&#39;);
    foreach($bookElements as $book){
        foreach ($book->attributes as $attr) {
            echo strtoupper($attr->nodeName).&#39; —— &#39;.$attr->nodeValue.&#39;<br/>&#39;;
        }
        echo "AUTHOR: ";
        foreach ($book->getElementsByTagName(&#39;author&#39;) as $author) {
            echo $author->nodeValue.&#39; &#39;;
        }
        echo &#39;<br/><br/>&#39;;
    }
로그인 후 복사

PHP 작업 XML

물론, 많은 속성의 경우 하나만 읽고 싶다면 item(index) 메소드를 통해 인덱스별로 읽을 수 있습니다

echo $book->attributes->item(1)->nodeValue;
로그인 후 복사

강력한 xpath 쿼리를 통해 속성을 수정할 수도 있습니다

还可以通过强大的xpath查询
로그인 후 복사

/ 노드

foreach($bookElements as $book){
        foreach ($book->attributes as $attr) {
            #$book->setAttribute($attr->nodeName,strtoupper($attr->nodeValue));
            $attr->nodeValue=strtoupper($attr->nodeValue);
        }
        echo "AUTHOR: ";
        foreach ($book->getElementsByTagName(&#39;author&#39;) as $author) {
            $author->nodeValue=strtoupper($author->nodeValue);
        }
    }
    $books->save($path);
로그인 후 복사

PHP 작업 XML

는 해당 nodeValue에 직접 액세스하여 속성을 수정하거나 setAttribute 메서드를 사용할 수 있습니다. 변경한 후.

$book->setAttribute($attr->nodeName,strtoupper($attr->nodeValue));
$attr->nodeValue=strtoupper($attr->nodeValue);
로그인 후 복사

요소/속성 추가

$newBook=$books->createElement(&#39;book&#39;); #创建新元素
    $newBook->setAttribute(&#39;name&#39;,&#39;PHP Objects, Patterns, and Practice&#39;);#创建新属性,方法一
    $publisher=$books->createAttribute(&#39;publisher&#39;);#创建新属性,方法二
    $publisher->nodeValue=&#39;Apress L.P&#39;;
    $newBook->appendChild($publisher); #把属性添加到元素上
    $author=$books->createElement(&#39;author&#39;);#创建子元素
    $author->nodeValue=&#39;Matt Zandstra&#39;;
    $newBook->appendChild($author);#把子元素添加到父元素上
    $books->documentElement->appendChild($newBook);#添加整个节点
    $books->save($path);
로그인 후 복사

속성/노드 삭제

$first=$bookElements->item(0);
    $first->removeAttribute(&#39;publisher&#39;);
    $second=$bookElements->item(1);
    $second->parentNode->removeChild($second);
    $books->save($path);
로그인 후 복사

PHP 작업 XML

더 많은 PHP 작업 xml 관련 내용을 확인하세요. 기사를 보려면 PHP 중국어 웹사이트에 주목하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!