Javascript E4X:分配给根节点
我在这里使用的是AdobeFlex/Air,但据我所知,这适用于所有JavaScript。我已经遇到这个问题好几次了,一定有一个简单的解决办法 假设我使用e4x拥有以下XML:Javascript E4X:分配给根节点,javascript,apache-flex,air,e4x,Javascript,Apache Flex,Air,E4x,我在这里使用的是AdobeFlex/Air,但据我所知,这适用于所有JavaScript。我已经遇到这个问题好几次了,一定有一个简单的解决办法 假设我使用e4x拥有以下XML: var xml:XML = <root><example>foo</example></root> 但是,如果我有这个: var xml:XML = <root>foo</root> 显然,这不起作用,因为我正在尝试将字符串分配给XML对象。如果
var xml:XML = <root><example>foo</example></root>
但是,如果我有这个:
var xml:XML = <root>foo</root>
显然,这不起作用,因为我正在尝试将字符串分配给XML对象。如果您试图更改文档的根元素,您实际上不需要-只需扔掉现有文档并替换它即可。或者,只需将您的元素包装在更合适的根元素中,您无论如何都不应该编辑根节点,这样您就可以进行设置 当然,这并不能回答你的问题。有一个丑陋的JS黑客可以做你想做的事情,但请记住,它可能比做上面的慢得多。无论如何,这是:
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\u syntax\u highlighter注释。如果您试图更改文档的根元素,您实际上不需要-只需扔掉现有文档并替换它即可。或者,只需将您的元素包装在更合适的根元素中,您无论如何都不应该编辑根节点,这样您就可以进行设置 当然,这并不能回答你的问题。有一个丑陋的JS黑客可以做你想做的事情,但请记住,它可能比做上面的慢得多。无论如何,这是:
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\u语法\u高亮注释。似乎您混淆了变量所包含的值。任务
node = textInput.text;
更改变量节点指向的值,它不会更改节点当前指向的对象的任何内容。要执行您想要执行的操作,可以使用XML类的setChildren方法:
您似乎混淆了变量所包含的值。任务
node = textInput.text;
更改变量节点指向的值,它不会更改节点当前指向的对象的任何内容。要执行您想要执行的操作,可以使用XML类的setChildren方法:
啊,谢谢你,提奥,看来我确实被弄糊涂了。我认为困惑的根源在于我能够分配
textInput.text = node;
我现在猜这只是隐式调用XML.toString来转换XML->String。我一直在寻找赛特儿童。啊,谢谢你,提奥——看来我确实被弄糊涂了。我认为困惑的根源在于我能够分配
textInput.text = node;
我现在猜这只是隐式调用XML.toString来转换XML->String。我一直在寻找孩子