【问题标题】:What does `namespaceMappings` mean in Word.CustomXMLPart APIWord.CustomXMLPart API 中的“namespaceMappings”是什么意思
【发布时间】:2020-07-06 20:37:03
【问题描述】:

我在Script Lab 中创建了一个小sn-p,它基本上是:

  1. 创建自定义 XML:
<AP xmlns="accordproject.org">
  <template xmlns="acceptance-of-delivery">
    <shipper>Aman Sharma</shipper>
  </template> 
</AP>
  1. 尝试使用 xPath /AP/template 查询此 xml。我运行这段代码:
await Word.run(async context => {
  const customXmlParts = context.document.customXmlParts;
  const AP = customXmlParts.getByNamespace("accordproject.org").getOnlyItemOrNullObject();
  await context.sync();
  const nodes = AP.query('/AP/template', {}); // how does this work?
  await context.sync();
  console.log(nodes);
})
  1. 删除 customXML。

query API 的第二个参数是namespaceMappings。我认为我传递错误,这就是为什么我将其作为输出(空对象)。

但是当我传递 * 而不是 /AP/template 时,我得到了整个 XML(而第二个参数 namespaceMappings 保持不变)。

我哪里错了?谁能分享一些sn-ps来帮助我查询customXML。

【问题讨论】:

    标签: ms-word office-js word-addins


    【解决方案1】:

    简短的回答是你可以使用

    const nodes = AP.query("/n1:AP/n2:template", {n1:"accordproject.org", n2:"acceptance-of-delivery"});
    

    我根本不了解 JS/TS,但我认为这些基本上是某种键值对。你也可以使用

    const nodes = AP.query("/n1:AP/n2:template", {"n1":"accordproject.org", "n2":"acceptance-of-delivery"});
    

    如果您更愿意将命名空间前缀视为字符串。

    (对于任何不熟悉的人,“n1”和“n2”只是您发明的前缀,因此您可以引用完整的命名空间 URI。它们与您可能在 XML 片段中使用的任何前缀没有任何关系您正在查询。)

    我也找不到这方面的文档,最初假设您可能需要更像 { Prefix:"ns1", namespaceURI:"the namespace URI" } 的东西,但这只是因为这些是 VBA 中使用的属性名称型号。

    【讨论】:

    • 感谢您的回答!我尝试了这种方法,但现在它给了我InvalidArgument 错误,似乎CustomXmlPart.query 抛出了错误。我认为这些论点是另外一回事。
    • 哦,不。我只有多个 XML 文件。我想这就是问题所在:) AP.query("/n1:AP/n2:template", {n1:"accordproject.org", n2:"acceptance-of-delivery"}); 顺便说一句,你能仔细检查一下这是否也有效吗?我不在我的笔记本电脑附近。
    • 谢谢你们俩。我会更新文档。问题:以下是否有效? AP.query("/accordproject.org:AP/acceptance-of-delivery:template", {});
    • @RickKirkham:我检查过了,它确实工作。 AFAICR 它不应该真正起作用,因为您应该使用前缀,但我敢肯定我们都不想涉足 XPath 规范。确保!
    • 谢谢@slightlysnarky。你帮了很多忙。我会更新文档。
    猜你喜欢
    • 1970-01-01
    • 2011-08-12
    • 2017-06-11
    • 2018-03-05
    • 2023-03-27
    • 1970-01-01
    • 2012-02-21
    • 2019-12-25
    • 1970-01-01
    相关资源
    最近更新 更多