繁体   English   中英

如何从 Google Apps 脚本中的 XML 解析中获取元素 ID

[英]How can I get the Element Id from XML parse in Google Apps Script

Xml 代码

<directory>
 <fieldset>
  <field id="displayName">Display name</field>
  
 </fieldset>
 <employees>
  <employee id="123">
   <field id="displayName">John Doe</field>
   
  </employee>
  <employee id="160">
   <field id="displayName">Jane Doe</field>
   
  </employee>

我可以使用 XmlService.parse 解析信息并获取每个元素中的值,但我无法获取员工/元素 ID 号

当我运行这个:

var roots = document.getRootElement().getChild('employees').getChildren();

我得到了单个元素,但我无法得到 id

 [[Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>], [Element: <employee/>]]
  • 您想从以下 xml 数据中检索123160

     <directory> <fieldset> <field id="displayName">Display name</field> </fieldset> <employees> <employee id="123"> <field id="displayName">John Doe</field> </employee> <employee id="160"> <field id="displayName">Jane Doe</field> </employee>
  • 您想使用 Google Apps Script 的 XmlService 来实现这一点。

修改点:

  • 在您的情况下, roots检索employee 因此,使用它,您可以检索id的属性。

修改后的脚本:

使用上述 xml 数据时,示例脚本如下。 在此示例中, </employees></directory>被添加到示例 xml 数据中。

function myFunction() {
  const xml = `<directory>
  <fieldset>
    <field id="displayName">Display name</field>
  </fieldset>
  <employees>
    <employee id="123">
      <field id="displayName">John Doe</field>
    </employee>
    <employee id="160">
      <field id="displayName">Jane Doe</field>
    </employee>
  </employees>
</directory>`;
  var document = XmlService.parse(xml);
  var roots = document.getRootElement().getChild('employees').getChildren();
  var ids = roots.map(e => e.getAttribute("id").getValue());
  console.log(ids);  // [123, 160]
}

笔记:

  • 在这种情况下,请使用带有 V8 的脚本。

  • 如果要同时检索employeeidfield的值,也可以使用以下脚本。

     var ids = roots.map(e => ({id: e.getAttribute("id").getValue(), name: e.getChild("field").getText()}));
    • 在这种情况下,检索[ { id: '123', name: 'John Doe' }, { id: '160', name: 'Jane Doe' } ]
  • 当上述 xml 示例数据的结构与您的实际数据不同时,修改后的脚本可能无法正常工作。 所以请注意这一点。

参考:

 (function() { var roots =document.getElementsByTagName("employees")[0].children; for(k=0;k<roots.length;k++){ var id=roots[k].getAttribute("id") console.log(id); } })();
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <directory> <fieldset> <field id="displayName">Display name</field> </fieldset> <employees> <employee id="123"> <field id="displayName">John Doe</field> </employee> <employee id="160"> <field id="displayName">Jane Doe</field> </employee> </employees> </directory>

您可以使用 javascript 像这样访问 id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM