PHP作成と解析XML


XMLが上昇するにつれて、PHPはXMLを専門に処理するための標準ライブラリ(クラスライブラリ)を大量に提供し、XMLを操作する.例えば、DOM XML拡張の書き換え、SimpleXML拡張、SOAP拡張、そしてPHP 5.1のXML ReaderやXML Write拡張など.一.SimpleXMLを使用してXMLを操作してXMLファイルを処理するには、SAXとDOMの2つの伝統的な処理構想がある.SAXはイベントトリガメカニズムに基づいて、XMLファイルを一度スキャンし、処理を完了する.DOMはXMLファイル全体を1本のDOMツリーとして構築し,DOMツリーの遍歴により処理を完了する.この2つの方法にはそれぞれ長所と短所があり、SAXの処理構想は相対的に抽象的で、DOMの処理過程は相対的に煩わしく、初心者の入門には向いていない.PHP 5は、SimpleXMLという新しいXML処理関数を発表した.名前は実は、SimpleXML自体はコンパクトで精巧で、わずかないくつかの方法関数しか提供されていませんが、それを使ってXMLファイルを処理する機能は非常に強く、操作も非常に簡単です.
1.    XML   

$ _ xml = <<<xml

<?xml version="1.0" encoding="utf-8"?>

<root>

<version>1.0</ version >

<info>xml      </info>

<user>

<name>      </name>

<url>http://www.google.com.hk</url>

<author sex="   ">    </author>

</user>

<user>

<name> CSDN </name>

<url>http://www.csdn.net</url>

<author sex="   ">     </author>

</user>

<user>

<name>    </name>

<url>http://www.verycd.com</url>

<author sex="   ">     </author>

</user>

</root>

xml;

$ _sxe = new SimpleXMLElement( $ _xml ); //        xml    

$ _sxe ->asXML( 'test.xml' ); //    XML   

 

2.    XML   

$ _sxe = simplexml_load_file( "test.xml" ); //    XML   

var_dump( $ _sxe ); //       

print_r( $ _sxe ); //       

Reflection::export( new ReflectionClass( $sxe )); //        

 

3.    XML   

$ _sxe = simplexml_load_file( "test.xml" ); //    XML   

var_dump( $ _sxe ); //       

print_r( $ _sxe ); //       

Reflection::export( new ReflectionClass( $ _sxe )); //        

echo $_ sxe ->asXML(); //      XML

 

4.    XML   

$_ sxe = simplexml_load_file( "test.xml" );

//         ,   version   

echo $_ sxe ->version;

//      ,          

echo $_ sxe ->version[ 2 ];

//           ,     

foreach ( $_ sxe ->version as $_version ) {

echo '[' . $_version . ']' ;

}

//         name

echo $_ sxe ->user[ 1 ]->name;

//           name  

foreach ( $_ sxe ->user as $_user ) {

echo '[' . $_user ->name. ']' ;

}

//             

echo $_ sxe ->user[ 1 ]-> author ->attributes();

 

5.    XPath      

$_ sxe = simplexml_load_file( "test.xml" );

//    XPath       

$_version = $_ sxe ->xpath( '/root/version' );

echo $_version [ 1 ];

//    version

foreach ( $_version as $_v ) {

echo '[' . $_v . ']' ;

}

//       

$_user = $_ sxe ->xpath( '/root/user' );

echo $_use r [ 2 ]->name;

//       

foreach ( $_user as $_u ) {

echo '[' . $_u ->name. ']' ;

}

//     

echo $_user [ 1 ]->author->attributes();

 
二.DOMDocumentを使用してXMLを操作する
多くの場合、手動でタグを生成するには、上から下までドキュメントを生成する必要があります.ラベルが完全であることを保証し、ラベルが開始され、終了しなければなりません.いくつかのPHP関数またはクラスを使用すると改善されますが、PHPはより役立つ組み込みオブジェクトと関数のセットを提供します.ドキュメントオブジェクトモデル(Document Object Model,DOM)は、ラベルの作成と処理を容易にするツリー構造を提供します.
1. DOMDocument    XML

//      DOMDocument()

$_doc = new DOMDocument();

//    xml

$_doc ->load( 'test.xml' );

//   version   

$_version = $_doc ->getElementsByTagName( 'version' );

echo $_version ->item( 2 )->nodeValue;

//    version   

foreach ( $_version as $v ) {

echo $v ->nodeValue;

}

2. DOMDocument    XML

//    xml

$_doc = new DOMDocument( '1.0' , 'utf-8' );

//     

$_doc ->formatOutput = true ;

//        

$_root = $_doc ->createElement( 'root' );

//          version

$_version = $_doc ->createElement( 'version' );

//   version      

$_versionTextNode = $_doc ->createTextNode( '1.0' );

//      version    

$_version ->appendChild( $_versionTextNode );

//       version    root  

$_root ->appendChild( $_version );

//        xml

$_doc ->appendChild( $_root );

//    xml

$_doc ->save( 'aaa.xml' );