Use the DOM to control XML in PHP5

xiaoxiao2021-04-10  359

The PHP5 enhances XML support and uses the DOM to extend the energy resistance of XML operations. These functions are part of the PHP5 core without being installed.

The following example shows the operation of the DOM on XML, explained in detail, please see the comments in the code LOAD ("test.xml"); // Output XML file // header ("Content-Type: Text / XML; CHARSET = GB2312"); // Echo $ DOM -> Savexml (); // Save XML file, return value Int (file size, byte Unit) // $ DOM -> Save ("newfile.xml"); echo "


acquired all Title elements:
"; $ titles = $ dom -> getElementsBytagname ("Title"); Foreach ($ TITLES AS $ Node) {Echo $ Node -> textContent. "<"; // This can also // echo $ node-> firstchild-> data. "} / * Echo "
spread all the nodes from root nodes:" "" "for"; "For" ($ dom-> documentelement-> childnodes as $ items) {// If the node is an element (Nodetype == 1) and The name is Item continues loop if ($ items-> nodetype == 1 && $ items-> nodename == "item") {foreach ($ item-> childnodes as $ titles) {// If the node is an element, and The name is Title to print it. IF ($ titles-> nodetype == 1 && $ titles-> nodename == "title") {Print $ titles-> textcontent. "/ N";}}}} * / / Using XPath Query Data Echo "
Title node queryed using XPath RESULTS:
"; $ xpath = new domxpath ($ DOM); $ titles = $ xpath-> query (" / r s / channel / item / title "); Foreach ($ titles as $ node) {Echo $ Node-> textContent. "} / * This is similar to using the getElementSbyTagname () method, but XPath is much more in-depth might be like this: / rss / channel / item [position () =

1] / Title Returns all / RSS / Channel / Item / Title [@ID = '23'] returns all Articles with all Articles containing the ID attribute and the value of 23. Element below Title (Translator Note: & Folder & Represents Directory Depth) * / / Write new data to 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); // Remove node from DOM / / $ DOM-> DocumentElement-> RemoveChild ($ DOM-> DocumentElement-> getElementsBytagname ("CHANNEL") -> ITEM 0); // or use XPath to query the node and then delete / / $ dom-> DocumentElement-> RemoveChild ($ xpath-> query ("/ ts / channel") -> item (0)); // $ DOM -> Save ("newfile.xml"); // Modify Node Data / / Modify the first title data from DOM // This place is stupid, and create a node and then replace the old node. If a friend has other good way, please tell me $ firsttitle = $ xpath-> query ("/ rss / channel / item / title") -> item (0); $ newTITETELE = $ DOM-> CreateElement "Title"; $ newTitle-> appendchild (New Domtext ("This's The New Title Text !!!)); $ firstTitle-> ParentNode-> Replacechild ($ newTitle, $ firsttitle); // Modify Properties / / $ FirstTITITLE = $ XPATH-> Query ("/ RSS / Channel / Item / Title") -> Item (0); // $ firstTTITLE-> SetAttribute ("Orderby", "4"); $ DOM-> Save (" Newfile.xml "); echo"


View newfile.xml "; // The following code gets and parsing the home page of PHP.NET, will return The content of the first Title element.

/ * "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" /?> The following is Test.xml file code: javascript </ title> <link> http: //blog.9cbs.net/zhongmao/category/29515.aspx</link> (gd) /t << <>eratoyalty / t <<g er er / / <<<<<<<<<<<<<<< <item> <creator> zhongmao </ creator> <title ORDERBY = "1"> OUT PUT Excel Used JavaScript </ title> <link> http://blog.9cbs.net/zhongmao/archive/2004/09/15 /105385.ASPX [lLINKY "Pubdate Wed, 15 Sep 2004 13:32:00 GMT </ pubdate> <guid> http://blog.9cbs.net/zhongmao/archive/2004/09/15/105385 .aspx </ guid> <comment> http://blog.9cbs.net/zhongmao/comments/105385.aspx </ comment> <Comments> http://blog.9cbs.net/zhongmao/archive/2004/09 / 15/105385.aspx#feedback</CommentS> (Comments) 2 (NewsS> )> (CommentrsS, Http://blog.9cbs.net/zhongmao/comments/commentrsS/105385.aspX</CommentRSSS> <PINGHTTP : //blog.9cbs.net/zhong Mao / Services / TrackbackBacks / 105385.aspx </ ping> <description> Test Description </ description> </ item> <item> <creatyl> zhongmao </ creator> <title ORDERBY = "2"> Out Put Word Used JavaScript </ Title> <link> http://blog.9cbs.net/zhongmao/archive/2004/08/06/67161.aspx </ limited> <pubdate> fri, 06 aug 2004 16:33:00 GMT </ Pubdate> <Guid></p></div><div class="text-center mt-3 text-grey"> 转载请注明原文地址:https://www.9cbs.com/read-133416.html</div><div class="plugin d-flex justify-content-center mt-3"></div><hr><div class="row"><div class="col-lg-12 text-muted mt-2"><i class="icon-tags mr-2"></i><span class="badge border border-secondary mr-2"><h2 class="h6 mb-0 small"><a class="text-secondary" href="tag-2.html">9cbs</a></h2></span></div></div></div></div><div class="card card-postlist border-white shadow"><div class="card-body"><div class="card-title"><div class="d-flex justify-content-between"><div><b>New Post</b>(<span class="posts">0</span>) </div><div></div></div></div><ul class="postlist list-unstyled"> </ul></div></div><div class="d-none threadlist"><input type="checkbox" name="modtid" value="133416" checked /></div></div></div></div></div><footer class="text-muted small bg-dark py-4 mt-3" id="footer"><div class="container"><div class="row"><div class="col">CopyRight © 2020 All Rights Reserved </div><div class="col text-right">Processed: <b>0.082</b>, SQL: <b>9</b></div></div></div></footer><script src="./lang/en-us/lang.js?2.2.0"></script><script src="view/js/jquery.min.js?2.2.0"></script><script src="view/js/popper.min.js?2.2.0"></script><script src="view/js/bootstrap.min.js?2.2.0"></script><script src="view/js/xiuno.js?2.2.0"></script><script src="view/js/bootstrap-plugin.js?2.2.0"></script><script src="view/js/async.min.js?2.2.0"></script><script src="view/js/form.js?2.2.0"></script><script> var debug = DEBUG = 0; var url_rewrite_on = 1; var url_path = './'; var forumarr = {"1":"Tech"}; var fid = 1; var uid = 0; var gid = 0; xn.options.water_image_url = 'view/img/water-small.png'; </script><script src="view/js/wellcms.js?2.2.0"></script><a class="scroll-to-top rounded" href="javascript:void(0);"><i class="icon-angle-up"></i></a><a class="scroll-to-bottom rounded" href="javascript:void(0);" style="display: inline;"><i class="icon-angle-down"></i></a></body></html><script> var forum_url = 'list-1.html'; var safe_token = 'NHG9XFstqE_2F25wtdBIvZMBn_2FknPjdIfcSIElL2ZQcEXSmDuMxoGesHGwNoD59nbfT_2Fe8NBYbbgK1TYWHmJ_2BxUg_3D_3D'; var body = $('body'); body.on('submit', '#form', function() { var jthis = $(this); var jsubmit = jthis.find('#submit'); jthis.reset(); jsubmit.button('loading'); var postdata = jthis.serializeObject(); $.xpost(jthis.attr('action'), postdata, function(code, message) { if(code == 0) { location.reload(); } else { $.alert(message); jsubmit.button('reset'); } }); return false; }); function resize_image() { var jmessagelist = $('div.message'); var first_width = jmessagelist.width(); jmessagelist.each(function() { var jdiv = $(this); var maxwidth = jdiv.attr('isfirst') ? first_width : jdiv.width(); var jmessage_width = Math.min(jdiv.width(), maxwidth); jdiv.find('img, embed, iframe, video').each(function() { var jimg = $(this); var img_width = this.org_width; var img_height = this.org_height; if(!img_width) { var img_width = jimg.attr('width'); var img_height = jimg.attr('height'); this.org_width = img_width; this.org_height = img_height; } if(img_width > jmessage_width) { if(this.tagName == 'IMG') { jimg.width(jmessage_width); jimg.css('height', 'auto'); jimg.css('cursor', 'pointer'); jimg.on('click', function() { }); } else { jimg.width(jmessage_width); var height = (img_height / img_width) * jimg.width(); jimg.height(height); } } }); }); } function resize_table() { $('div.message').each(function() { var jdiv = $(this); jdiv.find('table').addClass('table').wrap('<div class="table-responsive"></div>'); }); } $(function() { resize_image(); resize_table(); $(window).on('resize', resize_image); }); var jmessage = $('#message'); jmessage.on('focus', function() {if(jmessage.t) { clearTimeout(jmessage.t); jmessage.t = null; } jmessage.css('height', '6rem'); }); jmessage.on('blur', function() {jmessage.t = setTimeout(function() { jmessage.css('height', '2.5rem');}, 1000); }); $('#nav li[data-active="fid-1"]').addClass('active'); </script>