创建 XML DOM 元素,同时保持区分大小写
Create XML DOM Element while keeping case sensitivity
我正在尝试创建以下元素节点树:
<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 区分大小写的文章。不过,这与我的问题有点无关,因为我的代码未解析<![CDATA]]>
,我宁愿不使用.innerHTML
。
您需要使用 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>
不建议将 document.createElement
用于限定名称。看看document.createElementNS
是否可以更好地满足您的目的。
我仍然遇到问题,createElementNs 会在我的字符串上附加一个关于使用 new XMLSerializer().serializeToString(xmlDoc)
的属性"xmls"。
我最终使用以下函数来创建具有区分大小写的标签名称的元素:
function createElement(tagName) {
const doc = new DOMParser().parseFromString(`<${tagName}></${tagName}>`, 'text/xml')
return doc.children[0]
}
相关文章:
- 如何使用jquery强制一个单词更改大小写等以保留品牌
- DOM元素和angular元素之间的主要区别是什么
- 什么'$.get和$.ajax之间的区别是什么
- 什么'在Express中路由时,应用程序级中间件和路由器级中间件之间的区别是什么
- 如何将文本区和编辑区分开
- 存储区向变量返回了结果
- JavaScript Regex(?i)选项中字符串大小写不敏感的部分不起作用
- 如何使后缀函数不区分大小写
- angularjs 中 $window.location.reload() 和 $route.reload() 之间的区
- 如何在JavaScript中按大小写拆分字符串
- JavaScript1.7区分数组和对象的迭代程序
- 什么'这个javascript闭包的区别是什么
- 将文本更改为驼色大小写
- 使搜索不区分大小写
- 什么'“dest”和“dist”之间的区别是什么
- Regex:匹配以“AM”结尾的单词(不区分大小写比较)
- 如何使用jQuery进行不区分大小写的搜索
- 日食添加文件而不将其复制到工作区中
- 在每次文件上传时发送带有放置区的自定义数据.js
- Javascript 将 unicode 字符串转换为“标题大小写”