Home  >  Article  >  Backend Development  >  Example of how PHP uses DOM and simplexml to read xml documents

Example of how PHP uses DOM and simplexml to read xml documents

高洛峰
高洛峰Original
2017-02-10 16:47:041434browse

This article mainly introduces the method of PHP using DOM and simplexml to read xml documents. It analyzes the related operation skills of PHP using DOM and simplexml to create, load and read xml files in the form of examples. Friends who need it You can refer to the example below

This article describes how PHP uses DOM and simplexml to read xml documents. Share it with everyone for your reference, the details are as follows:

Example Use DOM to obtain the titles of all Jin Yong's novels in the following xml document. The location of the xml document is ./books.xml:

<?xml version="1.0" encoding="utf-8"?>
<root>
 <book>
  <title>天龙八部</title>
  <author>金庸</author>
 </book>
 <book>
  <title>陆小凤</title>
  <author>古龙</author>
 </book>
 <book>
  <title>倚天屠龙记</title>
  <author>金庸</author>
 </book>
 <book>
  <title>西游记</title>
  <author>吴承恩</author>
 </book>
 <book>
  <title>神雕侠侣</title>
  <author>金庸</author>
 </book>
 <book>
  <title>射雕英雄传</title>
  <author>金庸</author>
 </book>
</root>

Use DOM code to implement:

DOM reading xml document steps: 1. Create a DOM object——》2. Load the DOM document Content——》3. Intercept the tag where the content to be read is located——》Get the content to be read.

header(&#39;Content-type:text/html;charset=utf-8&#39;);
$arr=array();
$dom = new DOMDocument();//创建DOM对象
$dom->load(&#39;./books.xml&#39;);//载入xml文档
print_r($dom);
echo &#39;<hr>&#39;;
$dom = $dom->getElementsByTagName(&#39;book&#39;);//截取标签
for($i=0;$i<$dom->length;$i++){
 if($dom->item($i)->childNodes->item(1)->childNodes->item(0)->wholeText==&#39;金庸&#39;){
  $arr[] = $dom->item($i)->childNodes->item(0)->childNodes->item(0)->wholeText.&#39;<br />&#39;;//获取内容
 }
}
print_r($arr);

What is returned after using getElementsByTagName and childNodes are objects, so they must use item(int) afterwards, even if the objects they return only contain one item , must also be specified with item(0), otherwise an error will occur.

Use simplexml code to implement:

$simxml = simplexml_load_file(&#39;./books.xml&#39;);
$t = $simxml->book;
$arr=array();
foreach ($t as $v){
 if($v->author==&#39;金庸&#39;){
  $arr[] = (string)$v->title;
 }
}
print_r($arr);

After using simplexml_load_file, the object is returned, and the items in the object are both There are objects and arrays. Whether it is an object or an array, you can use foreach to loop through the contents. The last content obtained by this instance, $v->title, is actually an object, so it needs to be converted into a string using string.

For more examples of how PHP uses DOM and simplexml to read xml documents, please pay attention to the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn