复制 Xml as3 失败

Posted

技术标签:

【中文标题】复制 Xml as3 失败【英文标题】:Failed to copy Xml as3 【发布时间】:2016-07-03 08:52:58 【问题描述】:

我正在处理我正在使用 XML 的 as3 项目。当我将 xml 对象复制到其他 (newxml=oldxml) 时遇到问题,文本被复制但是如果我从 oldxml 中删除一些节点它会自动删除来自复制变量 (newxml) 的节点。

删除节点代码:

for each( node in xmlold.links.slidelink.(@displaytext.toLowerCase().indexOf(this.searchbar.text.toLowerCase())<0))


var index = node.childIndex();



   delete xmlold.links.slidelink[index];
   

    this.display.text=xmlnew.toString();

现在当我显示“xmlnew”文本时,它会在删除不需要的文本后给我输出

Xml 看起来像:

<outline xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <links>
    <slidelink slideid="_player" displaytext="Headd"    <slidelink slideid="5pnZ9Eziqq4" displaytext="Relationship" expand="true" type="slide"/>
    <slidelink slideid="vgVg68B" displaytext="Temperature Relationship" expand="true" type="slide"/>
    <slidelink slideid="_player" displaytext="Viscosity" expand="true" type="slide"/>
  </links>
</outline>

请检查问题您的帮助将不胜感激,谢谢

【问题讨论】:

newxml=oldxml 不会复制,它只是说“newxml 与 oldxml 相同”...您需要类似 newxml = new XML (oldxml); 的内容。您可以查看 google 或 AS3 手册,了解如何将 oldxml 数据传递到 newxml,但作为起点尝试var newxml : XML = new XML ( oldxml.toXMLString() ); 并从那里开始解决任何问题 感谢您的建议,但这也不起作用请帮助我 解决了!你的把戏做了伟大的 Vc 魔术。非常感谢。我是新来的,你能告诉我如何将你的答案标记为更正。再次感谢:) 您无法将评论标记为已接受,但您可以对其进行投票。 如何投票?选项在哪里? 【参考方案1】:

复制 XML 结构的最佳方法是使用 XML/copy(),这正是它的用途。

var newXML:XML = oldXML.copy();

【讨论】:

感谢您的建议,但问题已经解决了。这个解决方案也很好。 欢迎您接受任何答案,但您“应该”使用copy() 来复制 XML。使用new XML会导致字符串解析开销大,非常慢,这也是API中提供XMLcopy()的原因。 因此我的“您可以查看 AS3 手册,了解如何将 oldxml 数据传递到 newxml,但作为起点尝试...”无论哪种方式都会为提问者提供相同的结果。检查 toXMLString 你可以看到它复制数据(复杂与否).. @VC.One 不同之处在于toXMLString() 将XML 转换为String,然后XML() 将整个XML 字符串解析回XML。这既缓慢又毫无意义,您应该避免重新解析,这正是copy() 存在的原因。这就像使用 a = JSON.parse(JSON.stringify(b)) 而不是 a = b.copy() @Aaron,请原谅我一周没有登录的迟到的回复。我对此的最终决定是..我不相信它“非常缓慢和昂贵”(它甚至不应该有点慢)。我认为您高估解析 XML 的复杂性和 低估 CPU 处理 UTF 编码文本的能力。跟踪原始XML 并将其与XML.copy 的跟踪和toXMLString 的跟踪进行比较。所有 3 个看起来完全相同,并且在内存中将保持不变。重复/处理任何内存数据对于计算机来说都是即时的。【参考方案2】:

newxml=oldxml 不复制,它只是说“newxml 与 oldxml 相同”。

你需要像newxml = new XML (oldxml);这样的东西

作为起点尝试:

var newxml : XML = new XML ( oldxml.toXMLString() );

【讨论】:

这行得通,但它不必要地昂贵。将您的 XML 转换为字符串然后将字符串解析回 XML 非常慢。您应该只使用 API 中提供的 XML copy(),因此您不必像这样重新解析 XML。

以上是关于复制 Xml as3 失败的主要内容,如果未能解决你的问题,请参考以下文章

AS3 用图像字符替换字符串/文本

ssm注入失败

ant过滤 - 如果未设置属性,则失败

windows10 易升 下载失败 解决方法

启用 SQL 触发器时,Java 中的 Prepared Statement 失败

XML解析失败:格式不符