PHP DOM 追加新行的 child

标签 php dom

我叫 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 在追加一个新的 child 之前:

<?xml version="1.0" encoding="UTF-8"?>
<body>
    <seg>
        text 1
    </seg>
</body>
</xml>

追加新 child 后的 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/>

提前致谢!

最佳答案

总结给出的答案:

  1. 您必须将 formatOutput 设置为 true

  2. 你必须将 ignoreWhiteSpace 设置为 false

即:

$dom = new DomDocument();
$dom->formatOutput = true;
$dom->preserveWhiteSpace = false;
$dom->load($myxmlfile);

关于PHP DOM 追加新行的 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3155030/

相关文章:

php - 向用户显示他已注销

javascript - vanilla js - 获取另一个元素内的元素 ID,这不是文档的一部分

javascript - `onselectionchange` 的 HTML5 事件

php - 如果在类属性 html 中

php - Apache 在 Mavericks 上运行错误版本的 PHP

php - 当 Match Against 函数在 Mysql 中没有给出任何结果时,LIKE 函数会给我更好的结果吗

php - 解析数字但保留负数

c# - 如何获得浏览器渲染树的序列化(在 C# 中)

javascript - 复选框点击事件执行顺序和渲染

Java:通过正则表达式字符串解析用元素丰富 xml