この記事では主に、DOMDocument に基づいて PHP が XML を解析および生成する方法を紹介します。DOMDocument を使用して XML ノードを解析し、XML ファイルを生成するための PHP のさまざまな一般的な操作テクニックを、具体的な例に基づいて分析します。記事
PHP が DOMDocument に基づいて XML を解析して生成する方法について説明します。ご参考までに、詳細は次のとおりです:
XML を操作する SimpleXML についての知識を以前に共有しましたが、今回は、simplexml に加えて、PHP の DOMDocument の使用法に焦点を当てます。 DOMDocument の XML を生成するか、xml を生成して解析します
1. XML の生成
DOMDocument の操作 xml は、どう見ても Java の dom4j に似ていると思います。 、原理は同じです。 DOMDocument 内のノードと属性を枝と葉とみなすと、DOMDocument の DOMDocument がルートとなり、ノードと属性はすべてこのオブジェクトの下にマウントされます。以下のコードを見れば一目瞭然です
<?php $doc=new DOMDocument('1.0','utf-8'); //创建根节点 $root=$doc->createElement("StudentInfo"); //创建第一个子节点 $item=$doc->createElement("Item"); $name=$doc->createElement("name","蔡依林"); $studentnum=$doc->createElement("num","2009010502"); //创建属性(phpdom可以把任何元素当做子节点) $id=$doc->createAttribute("id"); $value=$doc->createTextNode('1'); $id->appendChild($value); //在父节点下面加入子节点 $item->appendChild($name); $item->appendChild($studentnum); $item->appendChild($id); $item2=$doc->createElement("Item"); $name2=$doc->createElement("name","潘玮柏"); $studentnum2=$doc->createElement("num","2009010505"); $id2=$doc->createAttribute("id"); $value2=$doc->createTextNode('2'); $id2->appendChild($value2); $item2->appendChild($name2); $item2->appendChild($studentnum2); $item2->appendChild($id2); $root->appendChild($item); $root->appendChild($item2); //把根节点挂载在DOMDocument对象 $doc->appendChild($root); header("Content-type: text/xml"); //在页面上输出xml echo $doc->saveXML(); //将xml保存成文件 $doc->save("stu.xml"); ?>
このコードを注意深く見てみると、実際には複雑ではありません。 id 属性にもいくつかの疑問があるかもしれません。 DOMDocument、そしてテキスト ノードがプロパティの下にマウントされます。生成された xml を見てみましょう
実際、DOMDocument は最初にノードまたは属性を生成し、XML の階層関係は最終的に addchild
2 によって DOMDocument 分析によって反映されます
<?php $doc=new DOMDocument(); //如果是解析xml字符串则使用loadXML $doc->load('stu.xml'); //取得根节点 $root=$doc->documentElement; //通过标记的名字取得对应的元素 $items=$root->getElementsByTagName('Item'); foreach($items as $key=>$val){ // echo count($val->attributes); //id是第一个属性所以使用item(0),nodeValue用来取得节点的值 echo $val->attributes->item(0)->name.":".$val->attributes->item(0)->nodeValue." "; foreach($val->getElementsByTagName('name') as $key2=>$val2){ echo $val2->nodeValue." "; } foreach($val->getElementsByTagName('num') as $key3=>$val4){ echo $val4->nodeValue."</br>"; } } ?>
。重要なことは、getElementsByTagName メソッド、属性、および項目が XML 解析の焦点であることを理解することです。他のものはすべて非常に単純です。解析される内容を確認するだけです
一般的に言えば、simplexml よりも少し面倒ですが、プログラマーとしてはまだ許容範囲です。
以上がPHP が DOMDocument を使用して XML を操作する方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。