成为
< 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);
更多推荐
将所有子节点复制到其他元素的本地方式
发布评论