使用PHP DOM-XML 创建和解析XML文件是一种常见的操作。下面是步骤:
步骤1:准备要写入的XML元素
首先,需要准备一个XML元素。例如:
<book>
<title>PHP 7 Cookbook</title>
<author>David Sklar</author>
<publisher>O'Reilly Media</publisher>
<year_published>2016</year_published>
</book>
步骤2:创建XML文档对象
要创建XML文档对象,可以使用PHP的 DOMDocument
类。例如:
$doc = new DOMDocument();
步骤3:创建XML的根元素
要创建XML的根元素,需要使用 createElement()
方法。例如:
$root = $doc->createElement('books');
$doc->appendChild($root);
该代码会创建一个名为 books
的元素,并将其添加到XML文档中。
步骤4:创建XML元素并附加到根元素上
要将XML元素添加到XML文档中,需要使用 createElement()
方法。例如:
$book = $doc->createElement('book');
$title = $doc->createElement('title');
$title->appendChild($doc->createTextNode('PHP 7 Cookbook'));
$book->appendChild($title);
$author = $doc->createElement('author');
$author->appendChild($doc->createTextNode('David Sklar'));
$book->appendChild($author);
$publisher = $doc->createElement('publisher');
$publisher->appendChild($doc->createTextNode('O\'Reilly Media'));
$book->appendChild($publisher);
$year_published = $doc->createElement('year_published');
$year_published->appendChild($doc->createTextNode('2016'));
$book->appendChild($year_published);
$root->appendChild($book);
该代码会创建一个 book
元素,然后向其中添加 title
、author
、publisher
和 year_published
子元素。
步骤5:将XML文档输出为字符串
要将XML文档输出为字符串,可以使用 saveXML()
方法。例如:
$xml_string = $doc->saveXML();
该代码会将XML文档输出为字符串,并将其赋值给 $xml_string
变量。
示例1:使用PHP DOM-XML 创建XML文件
假设我们要创建一个XML文件,其中包含两个 book
元素。代码如下:
$doc = new DOMDocument();
$root = $doc->createElement('books');
$doc->appendChild($root);
// 第一个book元素
$book1 = $doc->createElement('book');
$title1 = $doc->createElement('title');
$title1->appendChild($doc->createTextNode('PHP 7 Cookbook'));
$book1->appendChild($title1);
$author1 = $doc->createElement('author');
$author1->appendChild($doc->createTextNode('David Sklar'));
$book1->appendChild($author1);
$publisher1 = $doc->createElement('publisher');
$publisher1->appendChild($doc->createTextNode('O\'Reilly Media'));
$book1->appendChild($publisher1);
$year_published1 = $doc->createElement('year_published');
$year_published1->appendChild($doc->createTextNode('2016'));
$book1->appendChild($year_published1);
$root->appendChild($book1);
// 第二个book元素
$book2 = $doc->createElement('book');
$title2 = $doc->createElement('title');
$title2->appendChild($doc->createTextNode('JavaScript: The Definitive Guide'));
$book2->appendChild($title2);
$author2 = $doc->createElement('author');
$author2->appendChild($doc->createTextNode('David Flanagan'));
$book2->appendChild($author2);
$publisher2 = $doc->createElement('publisher');
$publisher2->appendChild($doc->createTextNode('O\'Reilly Media'));
$book2->appendChild($publisher2);
$year_published2 = $doc->createElement('year_published');
$year_published2->appendChild($doc->createTextNode('2011'));
$book2->appendChild($year_published2);
$root->appendChild($book2);
$xml_string = $doc->saveXML();
file_put_contents('books.xml', $xml_string);
该示例代码会将books
元素、book
元素以及其他子元素都写入了 books.xml
文件当中。可以使用文本编辑工具打开该文件,查看结果。
示例2:解析一个XML文件
假设我们要解析一个XML文件,其中包含两个 book
元素。代码如下:
$xml = <<<XML
<?xml version="1.0"?>
<books>
<book>
<title>PHP 7 Cookbook</title>
<author>David Sklar</author>
<publisher>O'Reilly Media</publisher>
<year_published>2016</year_published>
</book>
<book>
<title>JavaScript: The Definitive Guide</title>
<author>David Flanagan</author>
<publisher>O'Reilly Media</publisher>
<year_published>2011</year_published>
</book>
</books>
XML;
$doc = new DOMDocument();
$doc->loadXML($xml);
$books = $doc->getElementsByTagName('book');
foreach ($books as $book) {
$title = $book->getElementsByTagName('title')->item(0)->nodeValue;
$author = $book->getElementsByTagName('author')->item(0)->nodeValue;
$publisher = $book->getElementsByTagName('publisher')->item(0)->nodeValue;
$year_published = $book->getElementsByTagName('year_published')->item(0)->nodeValue;
echo "Title: $title\n";
echo "Author: $author\n";
echo "Publisher: $publisher\n";
echo "Year Published: $year_published\n";
}
该代码会解析名为 books.xml
的XML文件,并输出每个 book
元素的 title
、author
、publisher
和 year_published
子元素。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用PHP DOM-XML创建和解析XML文件 - Python技术站