2010-11-27 11 views
0

XML ein XML-Dokument in Google Apps Script zu analysieren: http://code.google.com/googleapps/appsscript/articles/XML_tutorial.html#HowItWorksParsen von XML mit Elementen Kolon/namespace

Aber das funktioniert nicht (Parsing fehlschlägt), wenn es ein Doppelpunkt in dem Elementnamen ist. Auch wenn es vielleicht der Namespace ist, ist es ein einziger Namespace im gesamten XML-Dokument.

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

Ist das ein Problem ist nur mit dem XML Google oder ist es Generika?

+0

Aus der Dokumentation geht hervor, dass es Namespace-bewusst ist. Was ist die Frage - ob XML Doppelpunkte in Elementnamen neben Namespaces erlaubt? – delnan

+0

Wenn die Xml-Klasse von google Namespace-aware ist, sollte die Analyse nicht fehlgeschlagen sein. Ich nahm das selbe Beispiel "Oracle of Bacon" und fügte (jedem Element vorangestellt) aws: allen Elementen hinzu und es schlug fehl. – anjanesh

+0

Wenn Sie aws hinzugefügt haben: haben Sie auch eine Namespace-Deklaration hinzugefügt? –

Antwort

1

Senden Sie einfach kein Argument als wahr.

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

Es ist definitiv kein allgemeines Problem. Es gibt sicherlich XML-Parser, die Namespaces behandeln.

Ich vermute, dass es eine Beschränkung des Tutorial-Codes ist und dass die Google-Bibliotheken tatsächlich Namespaces verarbeiten können, aber es ist etwas rätselhaft, wenn man sich die API-Dokumente ansieht.

Der Tutorial-Code wird mit Anrufen wie

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

, die eine nicht-Namespace-aware Version zu sein scheinen.

Es gibt eine Überladung dieser Methode, die auch eine Namespace-URL verwendet, die Sie möglicherweise benötigen, wenn ein Namespace beteiligt ist.

+0

"Es gibt eine Überladung dieser Methode, die auch eine Namespace-URL verwendet, die Sie möglicherweise benötigen, wenn ein Namespace beteiligt ist" - Dies schlägt fehl bei die Analyseebene. var oXML = Xml.parse (Inhalt); – anjanesh

0

Wenn Sie einen Namespace verwenden möchten, müssen Sie ihn zuerst deklarieren. Zum Beispiel:

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