PHP操作XML

高洛峰
リリース: 2016-12-24 11:09:25
オリジナル
1884 人が閲覧しました

操作されるデータ

<?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" もそうですし、 タグもそうですし、著者名 David Flanagan もテキスト ノードです。
2. 要素: 多くのプログラミング言語では XML 処理が行われます。ノードは API を統合する必要があるため、ノードのサブセットと言えます。単にのようなタグだけです。一般的に要素の操作方法はたくさんあります。
3. 属性: <> の XX="OO" などはすべて属性ノードです。必要に応じて、XML にもシンボルが含まれます。 use これらの特殊文字はエスケープする必要があります

PHP操作XML

DOMDocumentオブジェクト

私はDOMDocumentオブジェクトを使用してxmlを操作します。 もちろん、これは単純に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

もちろん、多くの属性について、1つだけを読み取りたい場合は、 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 メソッドを使用することもできます。save after を使用することを忘れないでください。変更を加えています。

$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中国語Webサイトに注目してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート