XML获取子节点时
试图访问第一项的孩子时,无效的结果。我正在使用Google App脚本。
function parseXml() {
var url = 'https://example.xml';
var xml = UrlFetchApp.fetch(url).getContentText();
var document = XmlService.parse(xml);
var root = document.getRootElement();
var channel = root.getChild('channel');
var items = channel.getChildren('item');
Logger.log(items[1].getValue());
Logger.log(items[1].getChildren())
Logger.log(items[1].getChild('g:id'))
}
输出:
5:37:46 PM Notice Execution started
5:37:57 PM Info 09771332150202100001A&C Ainsworth Wines - A&C Ainsworth Wines - 2021
5:37:57 PM Info [[Element: <g:id [Namespace: http://base.google.com/ns/1.0]/>], [Element: <g:title [Namespace: http://base.google.com/ns/1.0]/>], [Element: <g:description [Namespace: http://base.google.com/ns/1.0]/>], [Element: <g:link [Namespace: http://base.google.com/ns/1.0]/>], [Element: <g:image_link [Namespace: http://base.google.com/ns/1.0]/>], [Element: <g:availability [Namespace: http://base.google.com/ns/1.0]/>], [Element: <g:price [Namespace: http://base.google.com/ns/1.0]/>], [Element: <g:item_group_id [Namespace: http://base.google.com/ns/1.0]/>], [Element: <g:brand [Namespace: http://base.google.com/ns/1.0]/>], [Element: <g:gender [Namespace: http://base.google.com/ns/1.0]/>], [Element: <g:condition [Namespace: http://base.google.com/ns/1.0]/>], [Element: <g:google_product_category [Namespace: http://base.google.com/ns/1.0]/>], [Element: <g:product_type [Namespace: http://base.google.com/ns/1.0]/>], [Element: <g:spec [Namespace: http://base.google.com/ns/1.0]/>], [Element: <quantity/>], [Element: <option_values/>]]
5:37:57 PM Info null
5:37:58 PM Notice Execution completed
最后,XML示例。抱歉,我无法共享源URL。
<rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
<channel>
<item>
<g:id>09771332140202100001</g:id>
<g:title>A&C Ainsworth Wines - A&C Ainsworth Wines - 2021</g:title>
<g:description></g:description>
</item>
Null results when trying to access children of the first item. I'm using Google App Scripts.
function parseXml() {
var url = 'https://example.xml';
var xml = UrlFetchApp.fetch(url).getContentText();
var document = XmlService.parse(xml);
var root = document.getRootElement();
var channel = root.getChild('channel');
var items = channel.getChildren('item');
Logger.log(items[1].getValue());
Logger.log(items[1].getChildren())
Logger.log(items[1].getChild('g:id'))
}
Output:
5:37:46 PM Notice Execution started
5:37:57 PM Info 09771332150202100001A&C Ainsworth Wines - A&C Ainsworth Wines - 2021
5:37:57 PM Info [[Element: <g:id [Namespace: http://base.google.com/ns/1.0]/>], [Element: <g:title [Namespace: http://base.google.com/ns/1.0]/>], [Element: <g:description [Namespace: http://base.google.com/ns/1.0]/>], [Element: <g:link [Namespace: http://base.google.com/ns/1.0]/>], [Element: <g:image_link [Namespace: http://base.google.com/ns/1.0]/>], [Element: <g:availability [Namespace: http://base.google.com/ns/1.0]/>], [Element: <g:price [Namespace: http://base.google.com/ns/1.0]/>], [Element: <g:item_group_id [Namespace: http://base.google.com/ns/1.0]/>], [Element: <g:brand [Namespace: http://base.google.com/ns/1.0]/>], [Element: <g:gender [Namespace: http://base.google.com/ns/1.0]/>], [Element: <g:condition [Namespace: http://base.google.com/ns/1.0]/>], [Element: <g:google_product_category [Namespace: http://base.google.com/ns/1.0]/>], [Element: <g:product_type [Namespace: http://base.google.com/ns/1.0]/>], [Element: <g:spec [Namespace: http://base.google.com/ns/1.0]/>], [Element: <quantity/>], [Element: <option_values/>]]
5:37:57 PM Info null
5:37:58 PM Notice Execution completed
Finally, XML example. Sorry, I can't share the source URL.
<rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
<channel>
<item>
<g:id>09771332140202100001</g:id>
<g:title>A&C Ainsworth Wines - A&C Ainsworth Wines - 2021</g:title>
<g:description></g:description>
</item>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我相信您的当前问题和您的目标如下。
logger.log(项目[1] .getChild('g:id'))
返回null
。&lt; g:id&gt; ###&lt;/g:id in
in
item
中通过修改脚本来检索值。当我在脚本中看到您的显示XML和您的脚本时,我认为必须使用名称空间。当这反映在您的脚本中时,如下所示。
来自:
到:
或
或
或或
logger.log(项目[1] .getChild(' id',xmlService.getNamespace(“ http://base.google.com/ns/1.0”))。getValue())
可能有效。参考:
I believe your current issue and your goal are as follows.
Logger.log(items[1].getChild('g:id'))
returnsnull
.<g:id>###</g:id>
initem
by modifying your script.When I saw your showing XML and your script, in your script, I thought that the namespace is required to be used. When this is reflected in your script, it becomes as follows.
From:
To:
or
or
or
Logger.log(items[1].getChild('id', XmlService.getNamespace("http://base.google.com/ns/1.0")).getValue())
might work.Reference: