조작할 데이터
<?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의 여러 기본 개념
1. 노드: 노드는 XML을 처리할 때 많은 프로그래밍 언어에서 사용되는 노드입니다. XML에서는 요소, 속성, 네임스페이스, 주석, 텍스트 콘텐츠, 처리 명령 및 전체 문서가 노드에 속합니다. 즉, XML 문서의 각각의 독립적인 작은 부분은 노드, 즉
2. 요소: 많은 프로그래밍 언어에는 XML 처리가 있습니다. 노드는 API를 통합할 필요가 있기 때문에 노드에 대한 메서드가 너무 많지 않으며 요소는 노드의 하위 집합입니다. 간단히 말해서
3. 속성: <>의 XX="OO"와 같은 항목은 모두 속성 노드입니다.
4. HTML과 마찬가지로 xml에도 언어 점유 기호가 있습니다.
DOMDocument 객체
저는 DOMDocument 객체를 사용하여 xml을 조작하는데, simpleXml보다 사용하는 것이 더 과학적인 느낌이 듭니다. 물론, PHP를 사용한 첫날은 순전히 개인적인 느낌입니다. DOMDocument에는 일반적으로 사용되는 몇 가지 속성과 메서드가 있습니다.
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查询
/ 노드
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 메서드를 사용할 수 있습니다. 변경한 후.
$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 관련 내용을 확인하세요. 기사를 보려면 PHP 중국어 웹사이트에 주목하세요!