创建XML DOM元素,同时保持区分大小写

时间:2014-11-17 20:08:51

标签: javascript xml parsing

我试图创建以下元素nodetree:

<v:custProps>
    <v:cp v:nameU="Cost">
</v:custProps>

使用:

newCustprop = document.createElement("v:custProps");
newcp = document.createElement("v:cp");
newcp.setAttribute("v:nameU", "Cost");
newCustprop.appendChild(newcp);

但是,document.createElement("v:custProps")生成<v:custprops>而不是<v:custProps>。无论如何都要逃避这种解析?


修改1:

我目前正在阅读有关nodename区分大小写的this文章。它与我的问题略有不相关,因为我的代码未被<![CDATA]]>解析而我又不使用.innerHTML

2 个答案:

答案 0 :(得分:5)

您需要使用createElementNS() / setAttributeNS()并提供命名空间,而不仅仅是别名/前缀。该示例使用urn:v作为命名空间。

var xmlns_v = "urn:v";
var newCustprop = document.createElementNS(xmlns_v, "v:custProps");
var newcp = document.createElementNS(xmlns_v, "v:cp");
newcp.setAttributeNS(xmlns_v, "v:nameU", "Cost");
newCustprop.appendChild(newcp);

var xml = (new XMLSerializer).serializeToString(newCustprop);

的xml:

<v:custProps xmlns:v="urn:v"><v:cp v:nameU="Cost"/></v:custProps>

答案 1 :(得分:2)

建议不要将document.createElement用于限定名称。看看document.createElementNS是否可以更好地满足您的目的。