将所有子节点复制到其他元素的本地方式

编程入门 行业动态 更新时间:2024-10-09 18:20:16
本文介绍了将所有子节点复制到其他元素的本地方式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 我必须改变XML的未知内容。结构和内容本身是有效的。 原始

< blabla foo =bar> < aa> asas< / aa> < ff> < cc> < dd /> < / cc> < / ff> < gg attr2 =2> < / gg> ... ... < / blabla>

成为

< blabla foo =bar> < magic> < aa> asas< / aa> < ff> < cc> < dd /> < / cc> < / ff> < gg attr2 =2> < / gg> ... ... < / magic> < / blabla>

因此,在文档根节点(document.documentElement)下添加一个子直接,并将原来的孩子。 这里必须使用简单的javascript(ecmascript)完成。

现在的想法是

//获取根节点 RootNode = mymagicdoc.documentElement; //创建新的魔术元素(将包含原始根节点的内容) var magicContainer = mymagicdoc.createElement(magic); //将所有根节点子节点(及其子树 - 深拷贝)复制到魔术节点 / *这里 RootNodeClone = RootNode.cloneNode(true); RootNodeClone.childNodes ...... * / //从根节点中删除所有子节点(RootNode.hasChildNodes())RootNode.removeChild (RootNode.firstChild); //当根节点为空时,添加包含原始根节点 RootNode.appendChild(magicContainer)的所有子节点的magicContainer //节点;

如何做/ * * / step?或者也许有人有更好的解决方案来实现理想的结果? 提前谢谢!

答案:

解决方案

这样的东西应该与纯DOM和ECMAScript一起工作:

var blabla = mymagicdoc.documentElement ,magic = mymagicdoc.createElement(magic); while(blabla.hasChildNodes()){ magic.appendChild(blabla.removeChild(blabla.firstChild))} blabla.appendChild(magic);

I have to change "unknown" contents of XML. The structure and content itself is valid. Original

<blabla foo="bar"> <aa>asas</aa> <ff> <cc> <dd /> </cc> </ff> <gg attr2="2"> </gg> ... ... </blabla>

becomes

<blabla foo="bar"> <magic> <aa>asas</aa> <ff> <cc> <dd /> </cc> </ff> <gg attr2="2"> </gg> ... ... </magic> </blabla>

thus, adding a child straight under document root node (document.documentElement) and "pushing" the "original" children under that. Here it has to be done in plain javascript (ecmascript).

The idea now is to

// Get the root node RootNode = mymagicdoc.documentElement; // Create new magic element (that will contain contents of original root node) var magicContainer = mymagicdoc.createElement("magic"); // Copy all root node children (and their sub tree - deep copy) to magic node /* ????? here RootNodeClone = RootNode.cloneNode(true); RootNodeClone.childNodes...... */ // Remove all children from root node while(RootNode.hasChildNodes()) RootNode.removeChild(RootNode.firstChild); // Now when root node is empty add the magicContainer // node in it that contains all the children of original root node RootNode.appendChild(magicContainer);

How to do that /* */ step? Or maybe someone has a much better solution in general for achieving the desirable result? Thank you in advance!

Answer: The solution by maerics works perfectly.

解决方案

Something like this should work with pure DOM and ECMAScript:

var blabla = mymagicdoc.documentElement , magic = mymagicdoc.createElement("magic"); while (blabla.hasChildNodes()) { magic.appendChild(blabla.removeChild(blabla.firstChild)) } blabla.appendChild(magic);

更多推荐

将所有子节点复制到其他元素的本地方式

本文发布于:2023-11-30 12:47:25,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1650025.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:节点   元素   方式

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!