{"id":3127,"date":"2025-03-22T10:29:39","date_gmt":"2025-03-22T02:29:39","guid":{"rendered":"https:\/\/www.laixuexila.com\/?p=3127"},"modified":"2025-03-22T10:29:39","modified_gmt":"2025-03-22T02:29:39","slug":"php-xml-dom","status":"publish","type":"post","link":"https:\/\/www.laixuexila.com\/index.php\/2025\/03\/22\/php-xml-dom\/","title":{"rendered":"PHP XML DOM"},"content":{"rendered":"\n<p>PHP \u7684 <strong>XML DOM<\/strong>\uff08Document Object Model\uff09\u662f\u4e00\u79cd\u64cd\u4f5c XML \u6587\u6863\u7684\u6807\u51c6\u65b9\u6cd5\u3002\u5b83\u5c06\u6574\u4e2a XML \u6587\u6863\u52a0\u8f7d\u5230\u5185\u5b58\u4e2d\uff0c\u5e76\u5c06\u5176\u8868\u793a\u4e3a\u4e00\u4e2a\u6811\u5f62\u7ed3\u6784\uff0c\u53ef\u4ee5\u901a\u8fc7 DOM \u63d0\u4f9b\u7684 API \u8fdb\u884c\u8bbf\u95ee\u548c\u4fee\u6539\u3002\u4e0e <strong>Expat<\/strong> \u89e3\u6790\u5668\u4e0d\u540c\uff0c<strong>DOM<\/strong> \u4f1a\u6784\u5efa\u4e00\u4e2a\u5b8c\u6574\u7684\u5185\u5b58\u4e2d\u7684\u6811\u72b6\u7ed3\u6784\uff0c\u9002\u7528\u4e8e\u9700\u8981\u9891\u7e41\u64cd\u4f5c XML \u6570\u636e\u7684\u573a\u666f\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. <strong>XML DOM \u6982\u8ff0<\/strong><\/h2>\n\n\n\n<p>DOM \u662f\u4e00\u4e2a\u6811\u5f62\u7ed3\u6784\u6a21\u578b\uff0c\u6bcf\u4e2a XML \u5143\u7d20\u3001\u5c5e\u6027\u3001\u6587\u672c\u7b49\u90fd\u88ab\u8868\u793a\u4e3a\u6811\u4e2d\u7684\u8282\u70b9\u3002\u901a\u8fc7 PHP \u4e2d\u7684 <code>DOMDocument<\/code> \u7c7b\uff0c\u4f60\u53ef\u4ee5\u5bf9 XML \u6587\u4ef6\u8fdb\u884c\u521b\u5efa\u3001\u8bfb\u53d6\u3001\u4fee\u6539\u3001\u5220\u9664\u7b49\u64cd\u4f5c\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>\u4e3b\u8981\u7279\u70b9<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u6811\u72b6\u7ed3\u6784<\/strong>\uff1a\u6574\u4e2a XML \u6587\u6863\u88ab\u52a0\u8f7d\u5230\u5185\u5b58\u4e2d\uff0c\u6811\u7684\u6bcf\u4e2a\u8282\u70b9\u8868\u793a\u6587\u6863\u4e2d\u7684\u4e00\u4e2a\u5143\u7d20\u3001\u5c5e\u6027\u6216\u6587\u672c\u5185\u5bb9\u3002<\/li>\n\n\n\n<li><strong>\u6613\u4e8e\u64cd\u4f5c<\/strong>\uff1a\u901a\u8fc7 DOM \u63d0\u4f9b\u7684 API\uff0c\u4f60\u53ef\u4ee5\u5bf9\u6587\u6863\u8fdb\u884c\u589e\u3001\u5220\u3001\u67e5\u3001\u6539\u7b49\u64cd\u4f5c\u3002<\/li>\n\n\n\n<li><strong>\u9002\u7528\u4e8e\u5c0f\u5230\u4e2d\u7b49\u89c4\u6a21\u7684\u6587\u4ef6<\/strong>\uff1aDOM \u89e3\u6790\u5668\u9002\u7528\u4e8e\u5bf9 XML \u6587\u4ef6\u8fdb\u884c\u968f\u673a\u8bbf\u95ee\u548c\u9891\u7e41\u4fee\u6539\u7684\u573a\u666f\uff0c\u4f46\u5bf9\u4e8e\u975e\u5e38\u5927\u7684 XML \u6587\u4ef6\uff0c\u7531\u4e8e\u9700\u8981\u52a0\u8f7d\u6574\u4e2a\u6587\u6863\u5230\u5185\u5b58\uff0c\u53ef\u80fd\u4f1a\u6d88\u8017\u8f83\u591a\u7684\u5185\u5b58\u3002<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>DOMDocument \u7c7b<\/strong><\/h3>\n\n\n\n<p><code>DOMDocument<\/code> \u662f PHP \u4e2d\u7528\u6765\u5904\u7406 XML \u7684\u6838\u5fc3\u7c7b\uff0c\u5b83\u63d0\u4f9b\u4e86\u4e00\u7cfb\u5217\u65b9\u6cd5\u6765\u64cd\u4f5c XML \u6587\u6863\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u5e38\u7528\u65b9\u6cd5\u548c\u5c5e\u6027<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>load()<\/code><\/strong>\uff1a\u52a0\u8f7d XML \u6587\u4ef6\u6216\u5b57\u7b26\u4e32\u3002<\/li>\n\n\n\n<li><strong><code>save()<\/code><\/strong>\uff1a\u4fdd\u5b58 XML \u6587\u6863\u5230\u6587\u4ef6\u6216\u8f93\u51fa\u5b57\u7b26\u4e32\u3002<\/li>\n\n\n\n<li><strong><code>createElement()<\/code><\/strong>\uff1a\u521b\u5efa\u4e00\u4e2a\u65b0\u7684 XML \u5143\u7d20\u8282\u70b9\u3002<\/li>\n\n\n\n<li><strong><code>createAttribute()<\/code><\/strong>\uff1a\u521b\u5efa\u4e00\u4e2a\u65b0\u7684 XML \u5c5e\u6027\u8282\u70b9\u3002<\/li>\n\n\n\n<li><strong><code>getElementsByTagName()<\/code><\/strong>\uff1a\u83b7\u53d6\u6240\u6709\u6307\u5b9a\u6807\u7b7e\u540d\u7684\u5143\u7d20\u3002<\/li>\n\n\n\n<li><strong><code>getElementById()<\/code><\/strong>\uff1a\u6839\u636e ID \u83b7\u53d6\u6307\u5b9a\u7684\u5143\u7d20\u8282\u70b9\u3002<\/li>\n\n\n\n<li><strong><code>appendChild()<\/code><\/strong>\uff1a\u5c06\u8282\u70b9\u6dfb\u52a0\u5230\u6307\u5b9a\u7684\u7236\u8282\u70b9\u4e0b\u3002<\/li>\n\n\n\n<li><strong><code>removeChild()<\/code><\/strong>\uff1a\u5220\u9664\u6307\u5b9a\u7684\u5b50\u8282\u70b9\u3002<\/li>\n\n\n\n<li><strong><code>setAttribute()<\/code><\/strong>\uff1a\u4e3a\u8282\u70b9\u8bbe\u7f6e\u5c5e\u6027\u3002<\/li>\n\n\n\n<li><strong><code>getAttribute()<\/code><\/strong>\uff1a\u83b7\u53d6\u8282\u70b9\u7684\u5c5e\u6027\u503c\u3002<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">2. <strong>PHP \u4ee3\u7801\u793a\u4f8b<\/strong><\/h2>\n\n\n\n<p>\u4e0b\u9762\u662f\u4e00\u4e2a\u4f7f\u7528 <strong>DOM<\/strong> \u89e3\u6790\u5668\u7684\u7b80\u5355\u793a\u4f8b\uff0c\u5c55\u793a\u5982\u4f55\u521b\u5efa\u4e00\u4e2a XML \u6587\u4ef6\u5e76\u8bfb\u53d6\u5b83\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>1. \u521b\u5efa XML \u6587\u4ef6<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\/\/ \u521b\u5efa DOMDocument \u5b9e\u4f8b\n$doc = new DOMDocument('1.0', 'UTF-8');\n\n\/\/ \u521b\u5efa\u6839\u5143\u7d20 &lt;bookstore&gt;\n$root = $doc-&gt;createElement(\"bookstore\");\n$doc-&gt;appendChild($root);\n\n\/\/ \u521b\u5efa &lt;book&gt; \u5143\u7d20\n$book = $doc-&gt;createElement(\"book\");\n$root-&gt;appendChild($book);\n\n\/\/ \u521b\u5efa &lt;title&gt; \u5143\u7d20\uff0c\u5e76\u6dfb\u52a0\u6587\u672c\u5185\u5bb9\n$title = $doc-&gt;createElement(\"title\", \"PHP for Beginners\");\n$book-&gt;appendChild($title);\n\n\/\/ \u521b\u5efa &lt;author&gt; \u5143\u7d20\uff0c\u5e76\u6dfb\u52a0\u6587\u672c\u5185\u5bb9\n$author = $doc-&gt;createElement(\"author\", \"John Doe\");\n$book-&gt;appendChild($author);\n\n\/\/ \u521b\u5efa &lt;price&gt; \u5143\u7d20\uff0c\u5e76\u6dfb\u52a0\u6587\u672c\u5185\u5bb9\n$price = $doc-&gt;createElement(\"price\", \"19.99\");\n$book-&gt;appendChild($price);\n\n\/\/ \u4fdd\u5b58 XML \u5185\u5bb9\u5230\u6587\u4ef6\n$doc-&gt;save(\"books.xml\");\n\necho \"XML file created successfully.\";\n?&gt;<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8ff0\u4ee3\u7801\u521b\u5efa\u4e86\u4e00\u4e2a <code>books.xml<\/code> \u6587\u4ef6\uff0c\u5185\u5bb9\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n&lt;bookstore&gt;\n    &lt;book&gt;\n        &lt;title&gt;PHP for Beginners&lt;\/title&gt;\n        &lt;author&gt;John Doe&lt;\/author&gt;\n        &lt;price&gt;19.99&lt;\/price&gt;\n    &lt;\/book&gt;\n&lt;\/bookstore&gt;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>2. \u8bfb\u53d6 XML \u6587\u4ef6\u5e76\u4fee\u6539<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\/\/ \u52a0\u8f7d\u73b0\u6709\u7684 XML \u6587\u4ef6\n$doc = new DOMDocument();\n$doc-&gt;load(\"books.xml\");\n\n\/\/ \u83b7\u53d6\u6240\u6709\u7684 &lt;book&gt; \u5143\u7d20\n$books = $doc-&gt;getElementsByTagName(\"book\");\n\n\/\/ \u904d\u5386\u6bcf\u4e2a &lt;book&gt; \u5143\u7d20\nforeach ($books as $book) {\n    \/\/ \u83b7\u53d6 &lt;title&gt; \u5143\u7d20\u7684\u6587\u672c\u5185\u5bb9\n    $title = $book-&gt;getElementsByTagName(\"title\")-&gt;item(0)-&gt;nodeValue;\n\n    \/\/ \u8f93\u51fa\u6807\u9898\n    echo \"Book title: \" . $title . \"\\n\";\n\n    \/\/ \u4fee\u6539\u4ef7\u683c\n    $price = $book-&gt;getElementsByTagName(\"price\")-&gt;item(0);\n    $price-&gt;nodeValue = \"29.99\";\n}\n\n\/\/ \u4fdd\u5b58\u4fee\u6539\u540e\u7684 XML \u6587\u4ef6\n$doc-&gt;save(\"books_updated.xml\");\n\necho \"XML file updated successfully.\";\n?&gt;<\/code><\/pre>\n\n\n\n<p>\u8f93\u51fa\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Book title: PHP for Beginners<\/code><\/pre>\n\n\n\n<p>\u4fee\u6539\u540e\u7684 <code>books_updated.xml<\/code> \u6587\u4ef6\u5185\u5bb9\u4e3a\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n&lt;bookstore&gt;\n    &lt;book&gt;\n        &lt;title&gt;PHP for Beginners&lt;\/title&gt;\n        &lt;author&gt;John Doe&lt;\/author&gt;\n        &lt;price&gt;29.99&lt;\/price&gt;\n    &lt;\/book&gt;\n&lt;\/bookstore&gt;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>3. \u5220\u9664 XML \u8282\u70b9<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\/\/ \u52a0\u8f7d XML \u6587\u4ef6\n$doc = new DOMDocument();\n$doc-&gt;load(\"books_updated.xml\");\n\n\/\/ \u83b7\u53d6\u7b2c\u4e00\u4e2a &lt;book&gt; \u5143\u7d20\n$book = $doc-&gt;getElementsByTagName(\"book\")-&gt;item(0);\n\n\/\/ \u4ece\u7236\u5143\u7d20\u4e2d\u5220\u9664 &lt;book&gt; \u8282\u70b9\n$doc-&gt;documentElement-&gt;removeChild($book);\n\n\/\/ \u4fdd\u5b58\u4fee\u6539\u540e\u7684 XML \u6587\u4ef6\n$doc-&gt;save(\"books_deleted.xml\");\n\necho \"Book deleted successfully.\";\n?&gt;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>4. \u83b7\u53d6\u7279\u5b9a\u8282\u70b9<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\/\/ \u52a0\u8f7d XML \u6587\u4ef6\n$doc = new DOMDocument();\n$doc-&gt;load(\"books_updated.xml\");\n\n\/\/ \u6839\u636e ID \u83b7\u53d6\u5143\u7d20\n$book = $doc-&gt;getElementById(\"book1\");\nif ($book) {\n    echo \"Book found: \" . $book-&gt;nodeValue;\n} else {\n    echo \"Book not found.\";\n}\n?&gt;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">3. <strong>\u4f18\u52bf\u4e0e\u5c40\u9650\u6027<\/strong><\/h2>\n\n\n\n<p><strong>\u4f18\u52bf\uff1a<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u6811\u72b6\u7ed3\u6784<\/strong>\uff1aDOM \u4e3a XML \u6587\u6863\u63d0\u4f9b\u4e86\u6811\u72b6\u7ed3\u6784\u7684\u8bbf\u95ee\u65b9\u5f0f\uff0c\u4fbf\u4e8e\u76f4\u63a5\u64cd\u4f5c\u8282\u70b9\u3002<\/li>\n\n\n\n<li><strong>\u7075\u6d3b\u6027\u9ad8<\/strong>\uff1a\u4f60\u53ef\u4ee5\u968f\u65f6\u4fee\u6539\u3001\u5220\u9664\u548c\u589e\u52a0\u8282\u70b9\uff0c\u975e\u5e38\u9002\u5408\u9700\u8981\u4fee\u6539 XML \u6587\u6863\u5185\u5bb9\u7684\u573a\u666f\u3002<\/li>\n\n\n\n<li><strong>\u6807\u51c6<\/strong>\uff1aDOM \u662f W3C \u7684\u6807\u51c6\uff0c\u5e7f\u6cdb\u652f\u6301\u4e14\u4e0e\u5176\u4ed6\u8bed\u8a00\u517c\u5bb9\u3002<\/li>\n<\/ul>\n\n\n\n<p><strong>\u5c40\u9650\u6027\uff1a<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u5185\u5b58\u6d88\u8017\u8f83\u5927<\/strong>\uff1aDOM \u9700\u8981\u5c06\u6574\u4e2a XML \u6587\u4ef6\u52a0\u8f7d\u5230\u5185\u5b58\u4e2d\uff0c\u4e0d\u9002\u5408\u5904\u7406\u8d85\u5927\u6587\u4ef6\u3002<\/li>\n\n\n\n<li><strong>\u6027\u80fd\u5f00\u9500\u8f83\u9ad8<\/strong>\uff1a\u7531\u4e8e\u8981\u52a0\u8f7d\u6574\u4e2a\u6587\u6863\u5e76\u6784\u5efa\u6811\u7ed3\u6784\uff0c\u6027\u80fd\u548c\u5185\u5b58\u6d88\u8017\u8f83\u9ad8\uff0c\u5c24\u5176\u5728\u5904\u7406\u975e\u5e38\u5927\u7684 XML \u6587\u4ef6\u65f6\u3002<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u5b98\u65b9\u6587\u6863\u94fe\u63a5<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.php.net\/manual\/en\/class.domdocument.php\">PHP \u5b98\u65b9\u6587\u6863 &#8211; DOMDocument \u7c7b<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.w3.org\/TR\/DOM\/\">W3C DOM \u89c4\u8303<\/a><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>\u603b\u7ed3<\/strong><\/h3>\n\n\n\n<p><code>DOM<\/code> \u662f\u5904\u7406 XML \u7684\u4e00\u4e2a\u975e\u5e38\u5f3a\u5927\u4e14\u7075\u6d3b\u7684\u5de5\u5177\uff0c\u5b83\u9002\u7528\u4e8e\u4e2d\u5c0f\u89c4\u6a21\u7684\u6587\u4ef6\uff0c\u5e76\u5141\u8bb8\u4f60\u7cbe\u786e\u63a7\u5236 XML \u6587\u6863\u7684\u7ed3\u6784\u548c\u5185\u5bb9\u3002\u901a\u8fc7 <code>DOMDocument<\/code> \u7c7b\uff0c\u4f60\u53ef\u4ee5\u521b\u5efa\u3001\u8bfb\u53d6\u3001\u4fee\u6539\u548c\u5220\u9664 XML \u5143\u7d20\u3001\u5c5e\u6027\u4ee5\u53ca\u8282\u70b9\u3002\u5982\u679c\u4f60\u9700\u8981\u9891\u7e41\u64cd\u4f5c XML \u6570\u636e\uff0c<code>DOM<\/code> \u662f\u4e00\u4e2a\u975e\u5e38\u5408\u9002\u7684\u9009\u62e9\u3002\u5bf9\u4e8e\u975e\u5e38\u5927\u7684 XML \u6587\u4ef6\uff0c\u53ef\u80fd\u9700\u8981\u8003\u8651\u4f7f\u7528\u6d41\u5f0f\u7684 <code>Expat<\/code> \u89e3\u6790\u5668\u6216\u8005\u5176\u4ed6\u66f4\u9002\u5408\u5927\u6587\u4ef6\u5904\u7406\u7684\u65b9\u5f0f\u3002<\/p>\n\n\n\n<p>\u66f4\u591a\u8be6\u7ec6\u5185\u5bb9\u8bf7\u5173\u6ce8\u5176\u4ed6\u76f8\u5173\u6587\u7ae0\uff01<\/p>\n","protected":false},"excerpt":{"rendered":"<p>PHP \u7684 XML DOM\uff08Document Object Model\uff09\u662f\u4e00\u79cd\u64cd\u4f5c XML \u6587\u6863\u7684\u6807\u51c6\u65b9\u6cd5\u3002\u5b83 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3128,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[80],"tags":[],"class_list":["post-3127","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php"],"_links":{"self":[{"href":"https:\/\/www.laixuexila.com\/index.php\/wp-json\/wp\/v2\/posts\/3127","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.laixuexila.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.laixuexila.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.laixuexila.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.laixuexila.com\/index.php\/wp-json\/wp\/v2\/comments?post=3127"}],"version-history":[{"count":1,"href":"https:\/\/www.laixuexila.com\/index.php\/wp-json\/wp\/v2\/posts\/3127\/revisions"}],"predecessor-version":[{"id":3129,"href":"https:\/\/www.laixuexila.com\/index.php\/wp-json\/wp\/v2\/posts\/3127\/revisions\/3129"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.laixuexila.com\/index.php\/wp-json\/wp\/v2\/media\/3128"}],"wp:attachment":[{"href":"https:\/\/www.laixuexila.com\/index.php\/wp-json\/wp\/v2\/media?parent=3127"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.laixuexila.com\/index.php\/wp-json\/wp\/v2\/categories?post=3127"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.laixuexila.com\/index.php\/wp-json\/wp\/v2\/tags?post=3127"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}