Resultados nulos al intentar acceder a los elementos secundarios del primer elemento. Estoy usando secuencias de comandos de aplicaciones de Google.
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')) }Producción:
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 completedFinalmente, ejemplo XML. Lo siento, no puedo compartir la URL de origen.
<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>Creo que su problema actual y su objetivo son los siguientes.
Logger.log(items[1].getChild('g:id')) devuelve null .<g:id>###</g:id> en item modificando su secuencia de comandos.Cuando vi que mostraba XML y su secuencia de comandos, en su secuencia de comandos, pensé que se requiere el uso del espacio de nombres. Cuando esto se refleja en su guión, se convierte en lo siguiente.
Logger.log(items[1].getChild('g:id')) Logger.log(items[1].getChild('id', XmlService.getNamespace("http://base.google.com/ns/1.0")))o
Logger.log(items[1].getChild('id', XmlService.getNamespace("g", "http://base.google.com/ns/1.0")))o
Logger.log(items[1].getChild('id', XmlService.getNamespace("http://base.google.com/ns/1.0")).getValue())o
Logger.log(items[1].getChild('id', XmlService.getNamespace("g", "http://base.google.com/ns/1.0")).getValue())Logger.log(items[1].getChild('id', XmlService.getNamespace("http://base.google.com/ns/1.0")).getValue()) podría funcionar.