Avec des éléments d'analyse XML contenant deux points / espace de noms
-
28-09-2019 - |
Question
Utilisation Xml pour analyser un document XML dans Google Apps Script: http://code.google.com/googleapps/appsscript/articles/XML_tutorial .html # howitworks
Mais cela ne fonctionne pas (analyse échoue) s'il y a deux points dans le nom de l'élément. Même si elle peut-être l'espace de noms, est un espace de noms unique dans le document XML.
<aws:elementname>...</aws:elementname>
Est-ce est un problème uniquement avec Xml de Google ou est-ce générique?
La solution
Il suffit de ne pas envoyer l'argument comme vrai.
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");
Autres conseils
Il est certainement pas une question générale. Il y a certainement parseurs XML que namespaces poignée.
Je soupçonne que c'est une limitation du code tutoriel et que les bibliothèques de Google peuvent effectivement gérer les espaces de noms, mais il est un peu devinettes de regarder l'API docs.
Le code tutoriel utilise des appels comme
var movies = doc.html.head.getElements("movie");
qui semble être une version non-consciente espace de noms.
Il y a une surcharge de cette méthode qui prend une URL d'espace de noms aussi bien, et que vous pourriez avoir besoin d'utiliser s'il y a un espace de noms impliqués.
Si vous voulez utiliser un espace de noms, vous devez d'abord déclarer. Par exemple:.
<root xmlns:aws="some-uri">
<aws:elementname />
</root>