Синтаксический анализ XML с элементами, содержащими двоеточие / пространство имен
-
28-09-2019 - |
Вопрос
Использование 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>