php 조작 xml 튜 토리 얼 사용 하기

5938 단어 phpxml
php 조작 xml
최근 에 개인 적 인 작은 사 이 트 를 쓸 계획 입 니 다.일련의 원인 은 phop 으로 쓰 는 것 을 선 택 했 습 니 다.가장 큰 문 제 는 phop 이 유행 하지만 저 는 phop 을 접 해 본 적 이 없습니다.일주일 넘 게 기본 문법 을 본 후에 작은 연습 을 하고 몸 을 풀 었 습 니 다.하지만 그 동안 여러 가지 문 제 였 습 니 다.주로 phop 에 익숙 하지 않 아서 정리 해 보 겠 습 니 다.
데이터

<?xml version="1.0"?>
<books>
    <book name="JavaScript: The Defiitive Guide" publisher="O'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'Reilly Media, Inc.">
        <author>David Courley</author>
        <author>Brian Totty</author>
    </book>
</books>
XML 몇 가지 기본 개념
노드:노드 는 많은 프로그램 언어 에서 XML 을 처리 할 때의 노드 입 니 다.노드 는 비교적 광범 위 한 개념 입 니 다.XML 에서 요소,속성,이름 공간,주석,텍스트 내용,처리 명령,그리고 전체 문 서 는 노드 에 속 합 니 다.즉,XML 문서 의 모든 독립 된 일부분 은 노드 입 니 다.예,그리고 name="XXXX"도 마찬가지 입 니 다.라벨 은...심지어 작가 의 이름 인 David Flanagan 은 텍스트 노드 이다.
요소:많은 프로그램 언어 는 XML 에 대한 처리 가 있 습 니 다.노드 는 매우 광범 위 한 개념 입 니 다.API 를 통일 시 키 려 면 노드 에 대해 많은 방법 이 없 기 때 문 입 니 다.요소,즉 Element 는 노드 의 서브 집합 입 니 다.쉽게 말 하면 이런 라벨 이 어야 합 니 다.보통 요 소 를 대상 으로 하 는 조작 방법 이 많 습 니 다.
속성:이것 은 이해 하기 쉽 습 니 다.<>에 있 는 XX="OO"등 은 모두 속성 노드 입 니 다.
전의 문자:HTML 등 과 유사 하고 xml 도 언어 가 차지 하 는 기호 가 있 습 니 다.이 특수 문 자 를 사용 하려 면 전의 가 필요 합 니 다.
<
<
>
>
&
&

'

"
DOMDocument 대상
저 는 DOMDocument 대상 을 사용 하여 xml 를 조작 하 는데 사용 하 는 것 이 simpleXml 보다 과학적 인 것 같 습 니 다.물론 첫날 phop 을 사용 하 는 것 은 개인 적 인 느낌 입 니 다.DOMDocument 에는 자주 사용 하 는 속성 과 방법 이 몇 가지 있 습 니 다.
속성
역할.
attributes
노드 속성 집합
parentNode
노드 부모 노드
documentElement
문서 루트 노드
nodeName
노드 이름
nodeType
노드 종류
nodeValue
노드 값
Text
노드 와 하위 노드 를 문자 로 변환 합 니 다.
방법.
역할.
appendChild
노드 에 하위 노드 추가
createAttribute
속성 노드 만 들 기
createElement
요소 생 성
getElementsByTagName
노드 이름 으로 노드 집합 가 져 오기
hasChildNodes
노드 에 하위 노드 가 있 는 지 판단 하기
insertBefore
노드
Load
문서 경로 로 xml 불 러 오기
loadXML
zml 문자열 불 러 오기
removeChild
하위 노드 삭제
removeAttribute
속성 노드 삭제
save
문서 저장
xml 불 러 오기

$path=$_SERVER["DOCUMENT_ROOT"].'/books.xml';
    $books=new DOMDocument();
    $books->load($path);
노드 와 속성 읽 기/옮 겨 다 니 기

$bookElements=$books->getElementsByTagName('book');

    foreach($bookElements as $book){
        foreach ($book->attributes as $attr) {
            echo strtoupper($attr->nodeName).' ―― '.$attr->nodeValue.'<br/>';
        }
        echo "AUTHOR: ";
        foreach ($book->getElementsByTagName('author') as $author) {
            echo $author->nodeValue.' ';
        }
        echo '<br/><br/>';
    }
在这里插入图片描述
물론 많은 속성 에 대해 서 는 하나만 읽 고 싶 습 니 다.item(index)방법 으로 색인 에 따라 읽 을 수 있 습 니 다.

echo $book->attributes->item(1)->nodeValue;
강력 한 xpath 를 통 해 조회 할 수 있 습 니 다.

$xpath = new domxpath($books);
$bookElements=$xpath->query("/books/book");
속성/노드 수정

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('author') as $author) {
            $author->nodeValue=strtoupper($author->nodeValue);
        }

    }
    $books->save($path);
在这里插入图片描述
속성 변경 은 nodeValue 변경 에 직접 접근 할 수도 있 고 setAttribute 방법 을 사용 할 수도 있 습 니 다.변경 이 완료 되면 save 로 저장 하 는 것 을 잊 지 마 세 요.

$book->setAttribute($attr->nodeName,strtoupper($attr->nodeValue));
$attr->nodeValue=strtoupper($attr->nodeValue);
원소/속성 추가

$newBook=$books->createElement('book'); #     
    $newBook->setAttribute('name','PHP Objects, Patterns, and Practice');#     ,   

    $publisher=$books->createAttribute('publisher');#     ,   
    $publisher->nodeValue='Apress L.P';
    $newBook->appendChild($publisher); #         

    $author=$books->createElement('author');#     
    $author->nodeValue='Matt Zandstra';
    $newBook->appendChild($author);#           

    $books->documentElement->appendChild($newBook);#      
    $books->save($path);
속성/노드 삭제

$first=$bookElements->item(0);
    $first->removeAttribute('publisher');

    $second=$bookElements->item(1);
    $second->parentNode->removeChild($second);

    $books->save($path);
在这里插入图片描述
php 를 사용 하여 xml 튜 토리 얼 을 조작 하 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 phop 작업 xml 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기