如何与几个XML父母节点共享XML元素



我正在尝试同时创建三个具有共享值的XML文件(a,b和c(。不幸的是,当我尝试将一组元素分配给三个不同的父母时,代码会在第二个父母定义的非明确错误返回。

我不知道如何创建"卷轴"元素的副本。

我通过创建代码三次解决了问题,但它是非生产的。

var XMLrootA = XmlService.createElement('root');
var XMLrootB = XmlService.createElement('root');
var XMLrootC = XmlService.createElement('root');
var XMLsource = XmlService.createElement('source');
  XMLsource.addContent(XmlService.createElement('reference').setText('toto'));
XMLrootA.addContent(XMLSource);
XMLrootB.addContent(XMLSource);
XMLrootC.addContent(XMLSource);

我希望XMLrootBXMLrootC保持与XMLrootA相同的值,但是显然,多种影响是禁止的。

  • 您想使用复制元素来创建多个XML数据。
  • 您想制作XMLrootAXMLrootBXMLrootCXMLsource具有相同的结构。
  • XMLrootA.addContent(XMLSource)XMLrootB.addContent(XMLSource)XMLrootC.addContent(XMLSource)XMLSourceXMLsource相同。
    • 这是由于您发布问题时的错综复杂。

如果我的理解是正确的,那么这种修改怎么样?请将其视为几个答案之一。

修改点:

  • 在您的情况下,我使用了cloneContent()
  • 首先,它创建XMLrootA。然后,将每个元素复制到XMLrootBXMLrootC

修改后的脚本1:

如果您的脚本被修改为简单修改,那么以下修改后的脚本如何?

var XMLrootA = XmlService.createElement('root');
var XMLrootB = XmlService.createElement('root');
var XMLrootC = XmlService.createElement('root');
var XMLsource = XmlService.createElement('source');
XMLsource.addContent(XmlService.createElement('reference').setText('toto'));
XMLrootA.addContent(XMLsource);
// I modified below script.
var copy1 = XMLsource.getParentElement().cloneContent();
for (var i = 0; i < copy1.length; i++) {
  XMLrootB.addContent(copy1[i]);
}
var copy2 = XMLsource.getParentElement().cloneContent();
for (var i = 0; i < copy2.length; i++) {
  XMLrootC.addContent(copy2[i]);
}

修改后的脚本2:

在此修改后的脚本中,复制方法是从上面的脚本修改的。

var XMLrootA = XmlService.createElement('root');
var XMLrootB = XmlService.createElement('root');
var XMLrootC = XmlService.createElement('root');
var XMLsource = XmlService.createElement('source');
XMLsource.addContent(XmlService.createElement('reference').setText('toto'));
XMLrootA.addContent(XMLsource);
// I modified below script.
var root = [XMLrootB, XMLrootC];
root.forEach(function(e) {
  var copy = XMLsource.getParentElement().cloneContent();
  copy.forEach(function(f) {
    e.addContent(f);
  });
});

注意:

  • 这是一个简单的示例脚本。因此,请在您的情况下修改此。

参考:

  • 类XMLService
  • clonecontent((

如果我误解了您的问题,这不是您想要的方向,我深表歉意。

最新更新