[使用Google Apps脚本在XML中设置命名空间前缀

问题描述 投票:0回答:1

我正在尝试使用Google Apps脚本在XML文件中创建以下结构:

<?xml version="1.0" encoding="UTF-8"?>
<xfdf xmlns="http://ns.adobe.com/xfdf/">
  <fields>
    <field name="TestingXML">
      <value>Some Testing Value</value> 
    </field>
    <field name="Address_es_:prefill">
      <value>Client Address</value>
    </field>
    <field name="Address1_es_:prefill">
      <value>Project Address</value>
    </field>
  </fields>
</xfdf>

尝试设置名称空间前缀时出现问题:

xmlns =“ http://ns.adobe.com/xfdf/”

到目前为止是我的代码:

  var contractInfo = [
    ["Customer Name_es_:prefill","ownerFullName"],
    ["Address_es_:prefill", "clientAddress"],
    ["Address_Project_es_:prefill", "projectAddress"]
  ];

function CreateXML(contractInfo){
  //Define Namespace
  var nsh = XmlService.getNamespace('http://ns.adobe.com/xfdf/');

 //Create the root element and set the namespace
  var root = XmlService.createElement('xfdf', nsh);

  //Create the next section
  var fields = XmlService.createElement('fields');
  root.addContent(fields); //attach this section to the root

  //Loop and create the rest of sections based on an 2D array object.
  for(var m = 0; m < contractInfo.length; m++){

    var child1 = XmlService.createElement('field')
    .setAttribute('name', contractInfo[m][0]);

    var chiled2 = XmlService.createElement('value').setText(contractInfo[m][1]);
    child1.addContent(chiled2);
    fields.addContent(child1);
  }

  var document = XmlService.createDocument(root);
  //var xml = XmlService.getPrettyFormat().format(document);
  Logger.log(document);
}

但是运行此代码时,我在Logger.log中遇到以下错误

[Document:  No DOCTYPE declaration, Root is [Element: <xfdf [Namespace: http://ns.adobe.com/xfdf/]/>]]

理想情况下,输出XML看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<xfdf xmlns="http://ns.adobe.com/xfdf/">
  <fields>
    <field name="TestingXML">
      <value>Some Testing Value</value> 
    </field>
    <field name="Address_es_:prefill">
      <value>Client Address</value>
    </field>
    <field name="Address1_es_:prefill">
      <value>Project Address</value>
    </field>
  </fields>
</xfdf>

我相信我一开始会缺少本节:

xml版本=“ 1.0”编码=“ UTF-8”

但是这是由它自己创建的。如何解决这个No DOCTYPE声明?

xml google-apps-script xml-namespaces xmlservice
1个回答
0
投票

我相信您的目标如下。

© www.soinside.com 2019 - 2024. All rights reserved.