创建XML DOM元素,同时保持区分大小写 [英] Create XML DOM Element while keeping case sensitivity

查看:94
本文介绍了创建XML DOM元素,同时保持区分大小写的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试创建以下元素nodetree:

I'm trying to create the following element nodetree:

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

with:

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> 。无论如何都要逃避这种解析?

However, document.createElement("v:custProps") generates <v:custprops> as opposed to <v:custProps>. Is there anyway to escape this parsing?

编辑1:

我正在阅读 this 关于nodename案例敏感性的文章。这与我的问题有点无关,因为我的代码未解析为<![CDATA]]> 而我宁愿不使用 .innerHTML

I'm currently reading this article on nodename case sensitivity. It's slightly irrelevant to my problem though because my code is unparsed with <![CDATA]]> and I'd rather not use .innerHTML.

推荐答案

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

You need to use createElementNS()/setAttributeNS() and provide the namespace, not only the alias/prefix. The example uses urn:v as namespace.

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>

这篇关于创建XML DOM元素,同时保持区分大小写的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆