Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从XML向(X)HTML添加节点_Xml_Xhtml - Fatal编程技术网

从XML向(X)HTML添加节点

从XML向(X)HTML添加节点,xml,xhtml,Xml,Xhtml,我正在处理一个JavaScript脚本,它从外部源获取XML,并将XML文件中的节点添加到(X)HTML文档中 我有下面的代码。(未测试,仅为原型) var目的地;//XHTML文档中的 var nodes=xmlDoc.getElementsByTagName(“项”);//XML节点 对于(变量i=0;i

我正在处理一个JavaScript脚本,它从外部源获取XML,并将XML文件中的节点添加到(X)HTML文档中

我有下面的代码。(未测试,仅为原型)

var目的地;//XHTML文档中的
    var nodes=xmlDoc.getElementsByTagName(“项”);//XML节点 对于(变量i=0;i
我想知道这个解决方案是否可行,因为节点属于不同的名称空间


谢谢大家!

似乎
importNode()
正在做您想做的事情

这是标准的DOM级别2方法,请参见:

摘要
从可插入当前文档的外部文档创建节点副本


即使这是一种标准方法,也要测试跨浏览器支持。

@Tomolak:XHTML。编辑问题!您在这里附加到XML
节点。appendChild(item)
不附加到XHTML,它甚至是一个集合而不是节点,没有
appendChild
method@KARASZIIstván:修改了代码…打算将其附加到
目标
,现在有点不自觉了。@Ryan:你看到
importNode()
?-:“从可插入当前文档的外部文档创建节点副本。”看起来您正在将外部XML中的元素添加到XHTML文档中。如果这些元素不是有效的XHTML元素(以及正确的名称空间),则生成的文档将不再是有效的XHTML。据我所知,XHTML不支持混合任意名称空间。@Tomalak:我尝试了一下,不幸的是它不起作用……导入的
节点不显示为链接。@Tomalak:是,渲染结果的上半部分,Firebug窗格的下半部分。这与将XML子级直接附加到XHTML文档中的行为相同。@RyanLi:您能检查导入的节点位于哪个命名空间中吗?看起来
不在XHTML名称空间中,因此无法识别。@Tomalak:Firebug告诉我它的
名称空间URI
为空…@RyanLi:这就是它不起作用的原因。名称空间必须存在,但
importNode()
复制原始名称空间。有关可能有用的跨浏览器安全替代方案,请参阅。它重新创建节点而不是导入它们,因此它们将继承正确的名称空间。
var destination; // an <ul> in XHTML document
var nodes = xmlDoc.getElementsByTagName("item"); // XML nodes
for (var i = 0; i < nodes.length; ++i) {
    var item = document.createElement("li"); // XHTML document
    item.appendChild(nodes[i].cloneNode(true));
    destination.appendChild(item);
}