Синтаксический анализ XML с элементами, содержащими двоеточие / пространство имен

StackOverflow https://stackoverflow.com/questions/4293894

Вопрос

Использование Xml для синтаксического анализа XML-документа в Google Apps Script :http://code.google.com/googleapps/appsscript/articles/XML_tutorial.html#HowItWorks

Но это не работает (синтаксический анализ завершается неудачей), если в имени элемента есть двоеточие.Даже если это, возможно, пространство имен, это единое пространство имен во всем XML-документе.

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

Это проблема только с Xml от Google или она общая?

Это было полезно?

Решение

Просто не отправляйте аргумент как true.

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");

Другие советы

Это определенно не общая проблема.Безусловно, существуют анализаторы XML, которые обрабатывают пространства имен.

Я подозреваю, что это ограничение учебного кода и что библиотеки Google действительно могут обрабатывать пространства имен, но это несколько догадка, если посмотреть документы API.

Обучающий код использует вызовы типа

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

который, похоже, не поддерживает пространство имен.

Существует перегрузка этого метода, который также принимает URL-адрес пространства имен, и который вам, возможно, потребуется использовать, если задействовано пространство имен.

Если вы хотите использовать какое-то пространство имен, вы должны сначала объявить его.Например.:

<root xmlns:aws="some-uri">
  <aws:elementname />
</root>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top