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ファイルを処理する機能は非常に強く、操作も非常に簡単です.
多くの場合、手動でタグを生成するには、上から下までドキュメントを生成する必要があります.ラベルが完全であることを保証し、ラベルが開始され、終了しなければなりません.いくつかのPHP関数またはクラスを使用すると改善されますが、PHPはより役立つ組み込みオブジェクトと関数のセットを提供します.ドキュメントオブジェクトモデル(Document Object Model,DOM)は、ラベルの作成と処理を容易にするツリー構造を提供します.
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' );