Use DOM to control XML in PHP5, read and use DOM to control XML in PHP5, enhance XML support in PHP5, and extend XML operation capability using DOM. These functions are part of the PHP5 core and can be used without installation. The following example demonstrates DOM operations on XML. For more information, see the comments in the code? /*********************** "> <
The XML support is enhanced in PHP5, and the XML operation capability is extended using DOM. These functions are part of the PHP5 core and can be used without installation.
The following example demonstrates DOM operations on XML. For more information, see the comments in the code.
/*************************************** *********
** Use XML in PHP5
** Reference site:
** Http://cn.php.net/manual/zh/ref.dom.php
** The follow codes need PHP5 support
** Www.knowsky.com
**************************************** *********/
// Create a DOMDocument object first
$ Dom = new DomDocument ();
// Load the XML file
$ Dom-> load ("test. xml ");
// Output the XML file
// Header ("Content-type: text/xml; charset = gb2312 ");
// Echo $ dom-> saveXML ();
// Save the XML file. the returned value is int (file size, in bytes)
// $ Dom-> save ("newfile. xml ");
Echo"
Obtain all the title elements: ";
$ Titles = $ dom-> getElementsByTagName ("title ");
Foreach ($ titles as $ node)
{
Echo $ node-> textContent ."
";
// You can also
// Echo $ node-> firstChild-> data ."
";
}
/*
Echo"
Traverse all nodes from the root node:
";
Foreach ($ dom-> documentElement-> childNodes as $ items ){
// If the node is an element (nodeType = 1) and its name is item, the loop continues.
If ($ items-> nodeType = 1 & $ items-> nodeName = "item "){
Foreach ($ items-> childNodes as $ titles ){
// If a node is an element and its name is title, print it.
If ($ titles-> nodeType = 1 & $ titles-> nodeName = "title "){
Print $ titles-> textContent. "\ n ";
}
}
}
}
*/
// Use XPath to query data
Echo"
The title node result queried using XPath: ";
$ Xpath = new domxpath ($ dom );
$ Titles = $ xpath-> query ("/rss/channel/item/title ");
Foreach ($ titles as $ node)
{
Echo $ node-> textContent ."
";
}
/*
This is similar to using the getElementsByTagName () method, but Xpath is much more powerful.
In depth, it may be like this:
/Rss/channel/item [position () = 1]/title returns all
/Rss/channel/item/title [@ id = '23'] return all the titles that contain the id attribute and whose value is 23.
/Rss/channel/& folder &/title returns the title under all articles elements)
*/
// Write new data to the DOM
$ Item = $ dom-> createElement ("item ");
$ Title = $ dom-> createElement ("title ");
$ TitleText = $ dom-> createTextNode ("title text ");
$ Title-> appendChild ($ titleText );
$ Item-> appendChild ($ title );
$ Dom-> documentElement-> getElementsByTagName ('channel')-> item (0)-> appendChild ($ item );
// Delete a node from the DOM
// $ Dom-> documentElement-> RemoveChild ($ dom-> documentElement-> getElementsByTagName ("channel")-> item (0 ));
// Alternatively, use xpath to query the nodes and then delete them.
// $ Dom-> documentElement-> RemoveChild ($ xpath-> query ("/rss/channel")-> item (0 ));
// $ Dom-> save ("newfile. xml ");
// Modify node data from the DOM
// Modify the file of the first title
// This place is stupid. create a new node and replace the old one. If any of your friends has other good methods, please tell me.
$ FirstTitle = $ xpath-> query ("/rss/channel/item/title")-> item (0 );
$ NewTitle = $ dom-> createElement ("title ");
$ NewTitle-> appendChild (new DOMText ("This's the new title text !!! "));
$ FirstTitle-> parentNode-> replaceChild ($ newTitle, $ firstTitle );
// Modify attributes
// $ FirstTitle = $ xpath-> query ("/rss/channel/item/title")-> item (0 );
// $ FirstTitle-> setAttribute ("orderby", "4 ");
$ Dom-> save ("newfile. xml ");
Echo"
View newfile. xml ";
// The following code retrieves and parses the php.net homepage and returns the content of the first title element.
/*
$ Dom-> loadHTMLFile ("http://www.php.net /");
$ Title = $ dom-> getElementsByTagName ("title ");
Print $ title-> item (0)-> textContent;
*/
?>
The code for the test. xml file is as follows:
Javascript
Http://blog.csdn.net/zhongmao/category/29515.aspx
Javascript
Zh-chs
. Text version 0.958.2004.2001
Zhongmao
Out put excel used javascript
Http://blog.csdn.net/zhongmao/archive/2004/09/15/105385.aspx
Wed, 15 sep 2004 13:32:00 gmt
Http://blog.csdn.net/zhongmao/archive/2004/09/15/105385.aspx
Http://blog.csdn.net/zhongmao/comments/105385.aspx
Http://blog.csdn.net/zhongmao/archive/2004/09/15/105385.aspx#feedback
2
Http://blog.csdn.net/zhongmao/comments/commentrss/105385.aspx
Http://blog.csdn.net/zhongmao/services/trackbacks/105385.aspx
Test description
Zhongmao
Out put word used javascript
Http://blog.csdn.net/zhongmao/archive/2004/08/06/67161.aspx
Fri, 06 aug 2004 16:33:00 gmt
Http://blog.csdn.net/zhongmao/archive/2004/08/06/67161.aspx
Http://blog.csdn.net/zhongmao/comments/67161.aspx
Http://blog.csdn.net/zhongmao/archive/2004/08/06/67161.aspx#feedback
0
Http://blog.csdn.net/zhongmao/comments/commentrss/67161.aspx
Http://blog.csdn.net/zhongmao/services/trackbacks/67161.aspx
Test word description
Zhongmao
Xmlhttp
Http://blog.csdn.net/zhongmao/archive/2004/08/02/58417.aspx
Mon, 02 aug 2004 10:11:00 gmt
Http://blog.csdn.net/zhongmao/archive/2004/08/02/58417.aspx
Http://blog.csdn.net/zhongmao/comments/58417.aspx
Http://blog.csdn.net/zhongmao/archive/2004/08/02/58417.aspx#feedback
0
Http://blog.csdn.net/zhongmao/comments/commentrss/58417.aspx
Http://blog.csdn.net/zhongmao/services/trackbacks/58417.aspx
Xmlhttpaaa asd bb cc dd