创建区分大小写或';camelCase&x27;使用JavaScript或jQuery的XML节点
我需要在JavaScript中创建一些区分大小写的XML节点,这些节点的属性名之间带有冒号 示例:创建区分大小写或';camelCase&x27;使用JavaScript或jQuery的XML节点,javascript,jquery,xml,excel,Javascript,Jquery,Xml,Excel,我需要在JavaScript中创建一些区分大小写的XML节点,这些节点的属性名之间带有冒号 示例:联系人姓名 当我尝试通过JavaScript使用createElement()函数创建元素时,它会以小写形式创建它。此外,添加带有冒号的属性也有很多问题。例如:ss:Type=“String” 这是Excel数据,我正在将源.xml文件保存回.xls文件。XML元素和属性的情况对于Excel能够读取文件非常重要 任何示例或指针都会很有帮助。您正在寻找的JavaScript方法是和 然后,如果您想取回
联系人姓名
当我尝试通过JavaScript使用createElement()
函数创建元素时,它会以小写形式创建它。此外,添加带有冒号的属性也有很多问题。例如:ss:Type=“String”
这是Excel数据,我正在将源.xml文件保存回.xls文件。XML元素和属性的情况对于Excel能够读取文件非常重要
任何示例或指针都会很有帮助。您正在寻找的JavaScript方法是和 然后,如果您想取回字符串,
.innerHTML
将不再工作,因此您必须使用
保罗·S.的报告给了我一个解决方案
我使用createElement()
创建了所需的XML DOM元素,并使用setAttribute()
添加了所需的属性。这导致:
联系人姓名
请注意,本例中的元素和属性名称都是小写的。然而,我真正想要的是:
联系人姓名
按照Paul S的建议,首先通过
XMLSerializer()
将XML DOM转换为字符串,然后我简单地使用replace()
转换所有出现的这是一个过时的问题,但我会给出我的答案:
使用window.document
创建元素时,您正在使用http://www.w3.org/1999/xhtml)和使用它创建的节点响应html标准,并具有您所经历的限制。
您应该使用一个函数来处理通用XML
// instantiate a new Document
var xml_doc = document.implementation.createDocument('optional_namespace','rootElement');
// then your code to create element
var e = xml_doc.createElementNS('http://www.microsoft.com/office/excel/', 'Data');
e.setAttributeNS('http://www.microsoft.com/office/excel/', 'ss:Type', 'String');
e.textContent = 'Contact Name';
// probably append it
xml_doc.documentElement.appendChild(e);
// serialized xml_doc:
var s = new XMLSerializer();
s.serializeToString(xml_doc);
/*
<rootElement xmlns="optional_namespace">
<Data xmlns="http://www.microsoft.com/office/excel/" xmlns:ss="http://www.microsoft.com/office/excel/" ss:Type="String">Contact Name</Data>
</rootElement>"
*/
//实例化一个新文档
var xml_doc=document.implementation.createDocument('optional_namespace','rootElement');
//然后,使用您的代码创建元素
var e=xml_doc.createElements('http://www.microsoft.com/office/excel/","数据",;
e、 刚毛('http://www.microsoft.com/office/excel/“,”ss:Type“,”String“);
e、 textContent='联系人姓名';
//可能会附加它
xml_doc.documentElement.appendChild(e);
//序列化xml_文档:
var s=新的XMLSerializer();
s、 序列化字符串(xml\u doc);
/*
联系人姓名
"
*/
编辑:在Chrome和FF中测试有几个技巧:1)XML区分大小写,这不是一个选项2)这些分号称为“名称空间”。类型上的ss:前缀仍在消失。仍在寻找。似乎是特定于浏览器的?(Chrome忽略了它,firefox添加了大量xmlns属性)。打印后自己解析字符串似乎是一种可行的方法。感谢您为此付出的努力。我得到了一个答案并将其发布在下面。+1,因为您的答案确实很有帮助。谢谢
var s = new XMLSerializer();
s.serializeToString(e);
// instantiate a new Document
var xml_doc = document.implementation.createDocument('optional_namespace','rootElement');
// then your code to create element
var e = xml_doc.createElementNS('http://www.microsoft.com/office/excel/', 'Data');
e.setAttributeNS('http://www.microsoft.com/office/excel/', 'ss:Type', 'String');
e.textContent = 'Contact Name';
// probably append it
xml_doc.documentElement.appendChild(e);
// serialized xml_doc:
var s = new XMLSerializer();
s.serializeToString(xml_doc);
/*
<rootElement xmlns="optional_namespace">
<Data xmlns="http://www.microsoft.com/office/excel/" xmlns:ss="http://www.microsoft.com/office/excel/" ss:Type="String">Contact Name</Data>
</rootElement>"
*/