我需要使用Google Apps脚本XMLService创建一个XML元素:
<serv:message xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:serv="http://www.webex.com/schemas/2002/06/service">
我知道我可以使用以下Google Apps脚本代码添加一个命名空间,但如何添加两个命名空间?
var ns = XmlService.getNamespace("serv", "http://www.webex.com/schemas/2002/06/service");
var root = XmlService.createElement("message", ns);
root.setNamespace(ns);
答案 0 :(得分:2)
我担心您无法在当前XmlServices的同一元素中声明多个名称空间。我们希望Google可以在未来实施类似的addNamespace
方法,但事实并非如此。您只能为每个元素声明一个名称空间。根据{{3}}
<root>
<h:table xmlns:h="http://www.w3.org/TR/html4/">
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
<f:table xmlns:f="http://www.w3schools.com/furniture">
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
</root>
创建XML:
function createXml() {
var nsh = XmlService.getNamespace('h', 'http://www.w3.org/TR/html4/');
var nsf = XmlService.getNamespace('f', 'http://www.w3schools.com/furniture');
var root = XmlService.createElement('root');
var document = XmlService.createDocument(root);
var child1 = XmlService.createElement('table').setNamespace(nsh);
var tr = XmlService.createElement('tr').setNamespace(nsh);
var td1 = XmlService.createElement('td').setNamespace(nsh).setText('Apples');
var td2 = XmlService.createElement('td').setNamespace(nsh).setText('Bananas');
tr.addContent(td1).addContent(td2);
child1.addContent(tr);
root.addContent(child1);
var child2 = XmlService.createElement('table').setNamespace(nsf);
var property1 = XmlService.createElement('name').setNamespace(nsf).setText('Affrican Coffee Table');
var property2 = XmlService.createElement('width').setNamespace(nsf).setText('80');
var property3 = XmlService.createElement('length').setNamespace(nsf).setText('120');
child2.addContent(property1).addContent(property2).addContent(property3);
root.addContent(child2);
var xml = XmlService.getPrettyFormat().format(document);
}
答案 1 :(得分:1)
如果任何人仍然面临这个问题,你可以使用像我在这个例子中设置两个名称空间atom和gd的解析方法:
var document = XmlService.parse("<atom:entry xmlns:atom='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005'></atom:entry>");
答案 2 :(得分:1)
根据KLiFF的建议,它就是这样的。
function createSepaXML() {
var painNamespace = XmlService.parse("<Document xmlns='urn:iso:std:iso:20022:tech:xsd:pain.008.001.02' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'></Document>");
var root = painNamespace.getRootElement();
var CstmrDrctDbtInitn = XmlService.createElement('CstmrDrctDbtInitn');
root.addContent(CstmrDrctDbtInitn);
var xml = XmlService.getPrettyFormat().format(root);
Logger.log(xml);