如果您尝试更改文档的根元素,您实际上并不需要 - 只需丢弃现有文档并替换它即可。或者,只需将您的元素包装在更合适的根元素中(无论如何您都不应该编辑根节点),您就可以设置了。
当然,这并不能回答你的问题。有一个丑陋的 JS hack 可以做你想做的事,但请记住,它可能比上面做的要慢得多。无论如何,这里是:
var xml = <root>foo</root>; // </fix_syntax_highlighter>
var parser = new DOMParser();
var serializer = new XMLSerializer();
// Parse xml as DOM document
// Must inject "<root></root>" wrapper because
// E4X's toString() method doesn't give it to us
// Not sure if this is expected behaviour.. doesn't seem so to me.
var xmlDoc = parser.parseFromString("<root>" +
xml.toString() + "</root>", "text/xml");
// Make the change
xmlDoc.documentElement.firstChild.nodeValue = "CHANGED";
// Serialize back to string and then to E4X XML()
xml = new XML(serializer.serializeToString(xmlDoc));
您可以忽略 fix_syntax_highlighter 注释。