使用包含冒号/命名空间的元素解析 XML

发布于 2024-10-04 22:58:48 字数 415 浏览 7 评论 0原文

使用 Xml 解析 Google Apps 脚本中的 XML 文档: http://code.google.com/googleapps/appsscript/articles/XML_tutorial .html#HowItWorks

但是,如果元素名称中存在冒号,则此方法不起作用(解析失败)。 尽管它可能是命名空间,但它是整个 XML 文档中的单个命名空间。

<aws:elementname>...</aws:elementname>

这只是谷歌的 Xml 的问题还是通用的?

Using Xml to parse an XML document in Google Apps Script :
http://code.google.com/googleapps/appsscript/articles/XML_tutorial.html#HowItWorks

But this doesn't work (parse fails) if there is a colon in the element name.
Even though it maybe the namespace, its a single namespace throughout the XML document.

<aws:elementname>...</aws:elementname>

Is this is an issue only with the google's Xml or is it generic ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

沩ん囻菔务 2024-10-11 22:58:48

只是不要将论点视为正确。

var oXML = Xml.parse(sXML, false);
var root = oXML.getElement();
var topElement = root.getElements("http://namespace-uri","topElement");
var childElement = topElement[0].getElements("http://namespace-uri","childElement");

Just don't send argument as true.

var oXML = Xml.parse(sXML, false);
var root = oXML.getElement();
var topElement = root.getElements("http://namespace-uri","topElement");
var childElement = topElement[0].getElements("http://namespace-uri","childElement");
挖个坑埋了你 2024-10-11 22:58:48

这绝对不是一个普遍问题。当然有处理名称空间的 XML 解析器。

我怀疑这是教程代码的限制,并且 google 库实际上可以处理名称空间,但这在查看 API 文档时有些猜测。

教程代码使用的调用

var movies = doc.html.head.getElements("movie");

似乎是非命名空间感知版本。

此方法有一个重载,它也采用命名空间 URL,如果涉及命名空间,您可能需要使用该方法。

It is definitely not a general issue. There certainly are XML parsers that handle namespaces.

I suspect it's a limitation of the tutorial code and that the google libraries actually can handle namespaces, but it's somewhat guesswork from looking at the API docs.

The tutorial code is using calls like

var movies = doc.html.head.getElements("movie");

which seems to be a non-namespace-aware version.

There is an overload of this method that takes a namespace URL as well, and which you might need to use if there's a namespace involved.

长途伴 2024-10-11 22:58:48

如果你想使用某个命名空间,你必须首先声明它。例如:

<root xmlns:aws="some-uri">
  <aws:elementname />
</root>

If you want to use some namespace, you have to first declare it. E.g.:

<root xmlns:aws="some-uri">
  <aws:elementname />
</root>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文