in Javascript I wonder if I create an element without appending to child what will happen ? also what if I create the element from different doc and add it to new one ?
var text, parser, xmlDoc;
text = "<bookstore></bookstore>";
var text2="<test/>";
parser = new DOMParser();
xmlDoc = parser.parseFromString(text,"text/xml");
xmlDoc2 = parser.parseFromString(text2,"text/xml");
var newElement=xmlDoc2.createElement("hello");
xmlDoc.getElementsByTagName("bookstore")[0].appendChild(newElement);
var oSerializer = new XMLSerializer();
var sXML = oSerializer.serializeToString(xmlDoc);
console.log(sXML);
I can't find why I need to use the same doc to create the element
答案 0 :(得分:1)
您无需将元素附加到用于创建该元素的同一文档中。
createElement()
创建一个元素,该元素由创建该文档的文档拥有,但未在文档中提供任何位置。如果需要,您当然可以创建一个元素而不必附加它。 appendChild()
是在文档中为元素赋予位置的一种方法。
如果要处理多个文档(如代码示例中所示),则可以创建一个文档拥有的元素,并将其附加到另一个文档中,这将简单地将其从原始文档所有者中删除,将另一个文档设为所有者,并在其他文档中指定一个职位。
例如:
const astring = '<adoc></adoc>';
const bstring = '<bdoc></bdoc>';
const parser = new DOMParser();
const axml = parser.parseFromString(astring, 'application/xml');
const bxml = parser.parseFromString(bstring, 'application/xml');
let elem = axml.createElement('elem');
console.log(elem.ownerDocument.documentElement.tagName);
// adoc
bxml.querySelector('bdoc').appendChild(elem);
console.log(elem.ownerDocument.documentElement.tagName);
// bdoc