ホームページ >バックエンド開発 >PHPチュートリアル >php を使用して XML ファイルを解析する方法_PHP チュートリアル

php を使用して XML ファイルを解析する方法_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-20 11:17:19845ブラウズ

DOMElement

DOMElement DOMDocument::createElement ( string $name [, string $value ] )

ノード要素を作成する

文字列 $name: ノード名

String $value: ノードの値

8. ノードを追加します

•DOMNode DOMNode::appendChild ( DOMNode $newnode )

子ノードを追加します

DOMNode $newnode: 新しいノード

DOM操作では、追加、削除、変更操作は親ノードに依存する必要があります

9. 保存

•文字列DOMDocument::saveXML

文字列に保存

•int DOMDocument::save ( string $filename )

ファイルに保存

文字列 $filename:ファイル名

10. ノードを削除します

•DOMNode DOMNode::removeChild ( DOMNode $oldnode )

ノードを削除します

DOMNode $oldnode: 削除するノード

11. ノードを更新します

•DOMNode DOMNode::replaceChild ( DOMNode $newnode , DOMNode $oldnode )

DOMNode $newnode: 新しいノード

DOMNode $oldnode: 元のノード

12. 属性を追加します

•DOMAttr DOMElement::setAttribute( string $name , string $value )

文字列 $name: 属性名

文字列 $value: 属性値

13. 属性を変更する

DOMAttr DOMElement::setAttribute( string $name , string $value )

文字列 $name: 属性名

文字列 $value: 属性値

14. 属性の削除

•bool DOMElement::removeAttribute ( string $name )

String $name: 削除する属性の名前

15. 属性を取得する

•string DOMElement::getAttribute ( string $name )

String $name: 取得する属性値の属性名

DOMDocument は、PHP5 以降にリリースされた DOM 拡張機能の一部でもあり、html/xml の作成または解析に使用できます。現在、utf-8 エンコーディングのみをサポートしています。

コードは次のとおりです

$xmlstring = <<

ログイン
<ログイン>イムドンキー

XML;

$dom = 新しい DOMDocument();
$dom->loadXML($xmlstring);
print_r(getArray($dom->documentElement));

関数 getArray($node) {
$array = false;

if ($node->hasAttributes()) {
foreach ($node->属性を $attr として) {
$array[$attr->nodeName] = $attr->nodeValue;
}
}

if ($node->hasChildNodes()) {
if ($node->childNodes->length == 1) {
$array[$node->firstChild->nodeName] = getArray($node->firstChild);
} その他 {
foreach ($node->childNodes as $childNode) {
if ($childNode->nodeType != XML_TEXT_NODE) {
$array[$childNode->nodeName][] = getArray($childNode);
}
}
}
} その他 {
$node->nodeValue を返す;
}
$array を返します;
}

簡易XML

SimpleXML は、PHP5 以降に提供されたシンプルで使いやすい XML ツールのセットで、XML を処理に便利なオブジェクトに変換したり、XML データを整理して生成したりすることができます。ただし、名前空間を含む XML には適用されず、XML は整形式である必要があります。これは、simplexml_import_dom、simplexml_load_file、simplexml_load_string の 3 つのメソッドを提供します。関数名は関数を直感的に説明します。 3 つの関数はすべて SimpleXMLElement オブジェクトを返し、データは SimpleXMLElement 操作を通じて読み取り/追加されます

コードは次のとおりです


$string = <<

ログイン
<ログイン>イムドンキー

XML;

$xml = simplexml_load_string($string);
print_r($xml);
$login = $xml->login;//ここで返されるものは依然として SimpleXMLElement オブジェクトです
print_r($login);
$login = (string) $xml->login;//データを比較するときは、必ず最初に強制変換を行ってください
print_r($login);

SimpleXML の利点は、開発が簡単であることです。欠点は、処理前に XML 全体をメモリにロードするため、大量のコンテンツを含む XML ドキュメントを解析できない可能性があることです。小さなファイルを読み取っており、XML に名前空間が含まれていない場合は、SimpleXML が適切な選択です。

XMLリーダー

XMLReader も PHP5 以降の拡張機能です (5.1 以降はデフォルトでインストールされます) ドキュメントフロー内をカーソルのように移動したり、各ノードで停止したりするため、非常に柔軟な操作が可能です。入力への高速かつ非キャッシュのストリーミング アクセスを提供し、ストリームまたはドキュメントを読み取ることができるため、ユーザーはそこからデータを抽出し、アプリケーションにとって意味のないレコードをスキップできます。

Google Weather API を使用して情報を取得する例では、XMLReader の使用が示されています。詳細については、公式ドキュメントを参照してください。

コードは次のとおりです

$xml_uri = 'http://www.google.com/ig/api?weather=北京&hl=zh-cn';
$current = array();
$forecast = array();

$reader = 新しい XMLReader();
$reader->open($xml_uri, 'gbk');
while ($reader->read()) {
// 現在のデータを取得します
if ($reader->name == "current_conditions" && $reader->nodeType == XMLReader::ELEMENT) {
while($reader->read() && $reader->name != "current_conditions") {
$name = $reader->name;
$value = $reader->getAttribute('data');
$current[$name] = $value;
}
}

//予測データを取得する
if ($reader->name == "forecast_conditions" && $reader->nodeType == XMLReader::ELEMENT) {
$sub_forecast = array();
while($reader->read() && $reader->name != "forecast_conditions") {
$name = $reader->name;
$value = $reader->getAttribute('data');
$sub_forecast[$name] = $value;
}
$forecast[] = $sub_forecast;
}
}
$reader->close();

XMLReader は XML Parser に似ていますが、どちらも読み取り中に動作します。大きな違いは、SAX モデルが「プッシュ」モデルであり、新しいノードが読み取られるたびにアナライザーがアプリケーションにイベントをプッシュし、アプリケーションに通知します。 XmlReader を使用すると、リーダーから自由にノードを抽出でき、制御性が向上します。

XMLReader は libxml に基づいているため、一部の関数のドキュメントを参照して、お使いの libxml バージョンに適用できるかどうかを確認する必要があります。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/372026.html技術記事 DOMElement DOMElement DOMDocument::createElement ( string $name [, string $value ] ) ノード要素の作成 String $name: ノード名 String $value: ノード値 8. ノード DOMN を追加します...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。