javascript - 创建具有超过 1 个命名空间的根 XML 节点

标签 javascript jquery xml backbone.js namespaces

我正在使用 Backbone.js 和 Restful 服务。必须发布 XML。 我想添加超过 1 个命名空间

当前的 JS 代码类似于,

var nsp = "xmlns='http://services.xyz/xmlschema/common'";
var nsp2 = "xmlns:ns2='http://services.xyz/xmlschema/subscription'";

var doc = document.implementation.createDocument(nsp, "ns2:subscription", "");

但我希望 XML 根节点是这样的,

<ns2:subscription xmlns='http://services.xyz/xmlschema/common' 
xmlns:ns2='http://services.xyz/xmlschema/subscription'>..</ns2:subscription>

提前致谢。

最佳答案

一个元素节点只能有一个命名空间,但可以有多个命名空间定义。您可以将它们添加为 xmlns 命名空间中的属性节点。仅当元素节点或其属性节点之一不使用命名空间时才需要这样做。

var xmlns = {
    common : "http://services.xyz/xmlschema/common",
    xmlns: "http://www.w3.org/2000/xmlns/",
    ns2 : "http://services.xyz/xmlschema/subscription",
    ns3 : "urn:ns3"
};

var dom = document.implementation.createDocument('', '', null);
// create node in namespace (adds namespace definition)
var node = dom.appendChild(dom.createElementNS(xmlns.ns2, 'ns2:subscription'));
// default namespace - simple xmlns attribute
node.setAttribute('xmlns', xmlns.common);
// other namespace - attribute in xmlns namespace
node.setAttributeNS(xmlns.xmlns, 'xmlns:ns3', xmlns.ns3);

document.getElementById('demo').textContent = (new XMLSerializer()).serializeToString(dom);
<textarea id="demo" style="width: 100%; height: 5em;"></textarea>

关于javascript - 创建具有超过 1 个命名空间的根 XML 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28537590/

相关文章:

javascript - 如何防止用户在不使用禁用的情况下更改选择的值?

javascript - 为什么 Babel 使用自上而下的解析器?

java - 设置微调器中条目的文本大小(spinnerMode ='Dialog')

c# - jQuery 核心/数据或自定义属性(数据驱动)

c# - XmlDocument.SelectSingleNode 和前缀 + xmlNamespace 问题

xml - 使用 Linux 命令将纯字符串转换为 xml 格式

javascript - 有没有办法在 Chart.js V3.7.0 工具提示上应用 css,而不需要自定义或外部?

javascript - 使用 .html() 更新渲染 MathJax

javascript - 验证的淡入动画- Angular

jquery - DotNetNuke Jquery 在模块中不起作用