PHP DOMDocument操作によるxml解析

2302 ワード

1.xml概念拡張可能なタグ言語、標準的な汎用タグ言語のサブセットは、電子ファイルをタグする構造的なタグ言語である.xmlとhtmlの違いa.拡張性:xmlは自分で新しいタグを定義することができ、htmlはすでに規定されたタグb.データと表示である:xmlデータと表示は分離されており、htmlは統合されているc.側重点:xmlはデータ構造を記述するために使用され、htmlはどのようにデータを表現するか(各種規定のスタイルとラベル)d.文法:xmlはネストとペアリングを厳格に要求し、htmlは3を要求しない.xmlは主にデータを転送するためであり、データ4を表示するためではない.構文仕様:a.任意の開始ラベルには終了ラベルが必要です.すなわち、ペア閉鎖b.ラベルが互いにネストできないエラー:正しい:c.属性に値が必要です.属性値を引用符で含める必要があります.たとえば、d.特殊文字をエンティティ記号で置き換えるには、>用>を使って
注:大きなテキストに特殊文字が含まれている場合は、CDATA(微信開発xmlにはこれがあります)で保存できます.
XMLファイル
<?xml version="1.0" encoding="UTF-8"?>
<books>
	<book>
		<name>php    </name>
		<price>12</price>
	</book>
	<book>
		<name>php    </name>
		<price>11</price>
	</book>
</books>

DOM解析XML
$dom = new DOMDocument('1.0', 'utf-8');		//  DOM    
$dom->load('book.xml');						//        

$books = $dom->getElementsByTagName('book');	//       DOMNodeList    

//      
echo '    :'.$books->length."<br/>";
foreach ($books as $book)
{
	
	$bookname = $book->getElementsByTagName('name');	//       DOMNodeList    
	$bookprice = $book->childNodes->item(3);			//       DOMElement  ,childNodes      

	echo 'bookname:'.$bookname->item(0)->nodeValue."<br/>";	
	echo 'bookprice:'.$bookprice->nodeValue.'<br/>';
// 	$bookprice->nodeValue = 15; //      
}

//      
$cbook = $dom->createElement('book');
$cbookname = $dom->createElement('name');
$cbookname_text = $dom->createTextNode('php    ');		

$cbookname->appendChild($cbookname_text);	
$cbook->appendChild($cbookname);
$dom->getElementsByTagName('books')->item(0)->appendChild($cbook);

//      
$book3 = $dom->getElementsByTagName('book')->item(2);	//    DOMElement  
$book3->parentNode->removeChild($book3);				//              DOMElement  

$dom->save('book.xml');

注意:phpはSimpleXMLElementとDOMXPathで解析することもできます.XPathはノードのテキストデータをすばやく読み取ることができ,ビッグデータの読み取りは考慮できる.