PHP DOM使用新行追加子项
发布时间:2020-12-13 22:00:46 所属栏目:PHP教程 来源:网络整理
导读:我的名字是Rithy. 我不知道如何在xml中添加新节点或元素之前添加新行. 我的PHP: $dom = new DOMDocument();$dom-formatOutput = true;$dom-preserveWhiteSpace = true;$dom-load($xml_file);$body = $dom-getElementsByTagName('body')-item(0);$newelement
我的名字是Rithy.
我不知道如何在xml中添加新节点或元素之前添加新行. 我的PHP: $dom = new DOMDocument(); $dom->formatOutput = true; $dom->preserveWhiteSpace = true; $dom->load($xml_file); $body = $dom->getElementsByTagName('body')->item(0); $newelement_seg = $dom->createElement('seg'); $data = $dom->createTextNode(" text 2 "); $newelement_seg->appendChild($data); $body->appendChild($newelement_seg); $dom->save($xml_file); XML在添加新子项之前: <?xml version="1.0" encoding="UTF-8"?> <body> <seg> text 1 </seg> </body> </xml> 附加新子后的XML: <?xml version="1.0" encoding="UTF-8"?> <body> <seg> text 1 </seg> <seg> text 2 </seg> </body> </xml> 但我想要: <?xml version="1.0" encoding="UTF-8"?> <body> <seg> text 1 </seg> <seg> text 2 </seg> </body> </xml> <hr/> 提前致谢! 解决方法
你想达到什么目的?
通过将preserveWhiteSpace设置为true(不必要;这是默认值),您告诉libxml不要忽略仅由空格组成的文本节点.然而,与此同时,您正在尝试将XML文件格式化,这非常需要空白节点. 然后,即使忽略空格,你也必须意识到< seg>内的空白.标签很重要; libxml不会删除那些;如果你在文本1之后强制换行,则在下一行中< / seg>结束标记不能缩进,否则标记内文本节点的内容会有所不同. 你的代码给了我这个: <?xml version="1.0" encoding="UTF-8"?> <body> <seg> text 1 </seg> <seg> text 2 </seg></body> 因为你告诉libxml空格是重要的,所以它不能在第二个< / seg>之后放置换行符,否则它会创建另一个文本节点. 如果你说$dom-> preserveWhiteSpace = false;: <?xml version="1.0" encoding="UTF-8"?> <body> <seg> text 1 </seg> <seg> text 2 </seg> </body> 标签是缩进的,但libxml仍然无法执行此操作: <?xml version="1.0" encoding="UTF-8"?> <body> <seg> text 1 </seg> <seg> text 2 </seg> </body> 因为它会改变< seg>里面的文本节点的内容. 你可能想尝试tidy,虽然我不确定它会做你想要的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读