PHP erstellt und analysiert XML 1 (36)

WBOY
Freigeben: 2016-08-08 09:23:31
Original
902 Leute haben es durchsucht

1. Mit SimpleXML XML bearbeiten

Um XML-Dateien zu verarbeiten, gibt es zwei traditionelle Verarbeitungsideen: SAX und DOM. Basierend auf dem Ereignisauslösemechanismus scannt SAX die XML-Datei einmal, um die Verarbeitung abzuschließen. DOM erstellt die gesamte XML-Datei in einem DOM-Baum und schließt die Verarbeitung durch Durchlaufen des DOM-Baums ab. Beide Methoden haben ihre eigenen Vor- und Nachteile. Die Verarbeitungsideen von SAX sind relativ abstrakt und der Verarbeitungsprozess von DOM ist relativ umständlich, sodass sie für Anfänger nicht besonders geeignet sind. PHP5 führt einen neuen Satz XML-Verarbeitungsfunktionen ein, nämlich SimpleXML. Wie der Name schon sagt, ist SimpleXML selbst klein und kompakt und bietet nur wenige Methoden und Funktionen. Es ist jedoch sehr leistungsfähig bei der Verarbeitung von XML-Dateien und die Bedienung ist auch sehr einfach.

1. XML-Datei erstellen

$_xml =<<<<span>xml
</span><?xml version=<span>"</span><span>1.0</span><span>"</span> encoding=<span>"</span><span>utf-8</span><span>"</span>?>
<root>
<version><span>1.0</span></version>
<info>xml解析测试</info>
<user>
<name>张三</name>
<url>http:<span>//</span><span>www.ss.com</url></span><author sex=<span>"</span><span>男</span><span>"</span>>张三</author>
</user>
<user>
<name>宿舍</name>
<url>http:<span>//</span><span>www.ss.com</url></span><author sex=<span>"</span><span>女</span><span>"</span>>谁谁谁</author>
</user>
<user>
<name>电驴</name>
<url>http:<span>//</span><span>www.ss.com</url></span><author sex=<span>"</span><span>男</span><span>"</span>>姓黄的</author>
</user>
</root><span>xml;
$_sxe</span>= <span>new</span> SimpleXMLElement($_xml); <span>//</span><span>创建对象解析xml字符串</span>$_sxe->asXML(<span>'</span><span>test.xml</span><span>'</span>); <span>//</span><span>生成XML文件</span>
Nach dem Login kopieren

2. XML-Datei laden

$_sxe= simplexml_load_file(<span>"</span><span>test.xml</span><span>"</span>); <span>//</span><span>载入XML文件</span>var_dump($_sxe); <span>//</span><span>输出相关信息</span>print_r($_sxe); <span>//</span><span>输出主要信息</span>Reflection::export(<span>new</span> ReflectionClass($sxe)); <span>//</span><span>用反射查看详情</span>
Nach dem Login kopieren

3. XML analysieren Datei

$_sxe= simplexml_load_file(<span>"</span><span>test.xml</span><span>"</span>); <span>//</span><span>载入XML文件</span>var_dump($_sxe); <span>//</span><span>输出相关信息</span>print_r($_sxe); <span>//</span><span>输出主要信息</span>Reflection::export(<span>new</span> ReflectionClass($_sxe)); <span>//</span><span>用发射查看详情</span>echo $_sxe->asXML();<span>//</span><span>打印整个XML</span>
Nach dem Login kopieren

4. Lesen Sie die XML-Daten aus

$_sxe= simplexml_load_file(<span>"</span><span>test.xml</span><span>"</span><span>);
</span><span>//</span><span>读取一级节点的值,比如version标签</span>echo $_sxe-><span>version;
</span><span>//</span><span>如果有多个,可以设置它的数字下标</span>echo $_sxe->version[<span>2</span><span>];
</span><span>//</span><span>如果想要全部打印出来,可以用遍历</span><span>foreach</span> ($_sxe->version <span>as</span><span> $_version) {
echo </span><span>'</span><span>[</span><span>'</span>.$_version.<span>'</span><span>]</span><span>'</span><span>;
}
</span><span>//</span><span>访问二级节点的name</span>echo $_sxe->user[<span>1</span>]-><span>name;
</span><span>//</span><span>获取所有二级节点的name值</span><span>foreach</span> ($_sxe->user <span>as</span><span> $_user) {
echo </span><span>'</span><span>[</span><span>'</span>.$_user->name.<span>'</span><span>]</span><span>'</span><span>;
}
</span><span>//</span><span>获取二级节点的标签的属性</span>echo $_sxe->user[<span>1</span>]->author->attributes();
Nach dem Login kopieren

5. Verwenden Sie XPath, um den Knoten zu erhalten

$_sxe= simplexml_load_file(<span>"</span><span>test.xml</span><span>"</span><span>);
</span><span>//</span><span>使用XPath获取节点信息</span>$_version = $_sxe->xpath(<span>'</span><span>/root/version</span><span>'</span><span>);
echo $_version[</span><span>1</span><span>];
</span><span>//</span><span>遍历version</span><span>foreach</span> ($_version <span>as</span><span> $_v) {
echo </span><span>'</span><span>[</span><span>'</span>.$_v.<span>'</span><span>]</span><span>'</span><span>;
}
</span><span>//</span><span>访问二级节点</span>$_user = $_sxe->xpath(<span>'</span><span>/root/user</span><span>'</span><span>);
echo $_user[</span><span>2</span>]-><span>name;
</span><span>//</span><span>遍历二级节点</span><span>foreach</span> ($_user <span>as</span><span> $_u) {
echo </span><span>'</span><span>[</span><span>'</span>.$_u->name.<span>'</span><span>]</span><span>'</span><span>;
}
</span><span>//</span><span>访问属性</span>echo $_user[<span>1</span>]->author->attributes();
Nach dem Login kopieren

2. Verwenden von DOMDocument zum Bearbeiten von XML

In vielen Fällen erfordert die manuelle Generierung von Tags die Generierung von Dokumenten von oben nach unten. Es muss sichergestellt werden, dass die Tags vollständig sind, einschließlich der Start- und End-Tags. Obwohl mit Hilfe einiger PHP-Funktionen oder -Klassen einige Verbesserungen erzielt werden können, bietet PHP auch einen hilfreicheren Satz integrierter Objekte und Funktionen. Das Document Object Model (DOM) bietet eine Baumstruktur, die das Erstellen und Verarbeiten von Tags erleichtert.

1.DOMDocument analysiert XML

<span>//</span><span>创建一个DOMDocument()</span>$_doc = <span>new</span><span> DOMDocument();
</span><span>//</span><span>载入xml</span>$_doc->load(<span>'</span><span>test.xml</span><span>'</span><span>);
</span><span>//</span><span>取version标签</span>$_version = $_doc->getElementsByTagName(<span>'</span><span>version</span><span>'</span><span>);
echo $_version</span>->item(<span>2</span>)-><span>nodeValue;
</span><span>//</span><span>遍历version标签</span><span>foreach</span> ($_version <span>as</span><span> $v) {
echo $v</span>-><span>nodeValue;
}</span>
Nach dem Login kopieren

2.DOMDocument generiert XML

<span>//</span><span>声明xml</span>$_doc = <span>new</span> DOMDocument(<span>'</span><span>1.0</span><span>'</span>,<span>'</span><span>utf-8</span><span>'</span><span>);
</span><span>//</span><span>排版格式</span>$_doc->formatOutput = <span>true</span><span>;
</span><span>//</span><span>创建一个主标签</span>$_root = $_doc->createElement(<span>'</span><span>root</span><span>'</span><span>);
</span><span>//</span><span>创建一个一级标签version</span>$_version = $_doc->createElement(<span>'</span><span>version</span><span>'</span><span>);
</span><span>//</span><span>给version标签里赋值</span>$_versionTextNode = $_doc->createTextNode(<span>'</span><span>1.0</span><span>'</span><span>);
</span><span>//</span><span>将值放入version标签里</span>$_version-><span>appendChild($_versionTextNode);
</span><span>//</span><span>将一级标签version放入root里</span>$_root-><span>appendChild($_version);
</span><span>//</span><span>将主标签写入xml</span>$_doc-><span>appendChild($_root);
</span><span>//</span><span>生成xml</span>$_doc->save(<span>'</span><span>aaa.xml</span><span>'</span>);
Nach dem Login kopieren

Das Obige stellt die PHP-Erstellung und das Parsen von XML 1 (36) vor, einschließlich der relevanten Inhalte. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage