2010-11-27 41 views
0

En utilisant Xml pour analyser un document XML dans Google Apps Script: http://code.google.com/googleapps/appsscript/articles/XML_tutorial.html#HowItWorksXML Parsing avec des éléments contenant du côlon/espace de noms

Mais cela ne fonctionne pas (analyse échoue) s'il y a deux points dans le nom de l'élément. Même si c'est peut-être l'espace de noms, c'est un espace de noms unique dans tout le document XML.

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

Est-ce un problème uniquement avec le fichier XML de Google ou est-ce générique?

+0

D'après la documentation, je suppose que c'est un espace de noms. Quelle est la question - si XML autorise les deux-points dans les noms d'éléments en dehors des espaces de noms? – delnan

+0

Si la classe Xml de google est sensible à l'espace de noms, l'analyse syntaxique ne devrait pas échouer. J'ai pris le même exemple "Oracle de Bacon" et ajouté (préfixé à chaque élément) aws: à tous les éléments et il a échoué. – anjanesh

+0

Lorsque vous avez ajouté aws: avez-vous ajouté une déclaration d'espace de nom pour cela? –

Répondre

1

N'envoyez pas d'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"); 
0

Ce n'est certainement pas un problème général. Il y a certainement des parseurs XML qui gèrent les espaces de noms.

Je suppose que c'est une limitation du code du didacticiel et que les bibliothèques google peuvent réellement gérer les espaces de noms, mais c'est un peu difficile de regarder les documents de l'API.

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 aussi une URL d'espace de noms, et que vous pourriez avoir besoin d'utiliser s'il y a un espace de noms impliqué.

+0

"Il y a une surcharge de cette méthode qui prend aussi une URL d'espace de noms, et que vous pourriez avoir besoin d'utiliser s'il y a un espace de noms impliqué" - Ceci échoue à le niveau d'analyse. var oXML = Xml.parse (contenu); – anjanesh

0

Si vous souhaitez utiliser un espace de noms, vous devez d'abord le déclarer. E.g .:

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