Как прочитать имена атрибутов в колонках (например, модель: имя) при разборе XML с использованием XmlSlurper
У меня есть XMl, где атрибут, например, модель: имя.
После обновления до Grails 2 он не может извлечь атрибут, используя
. Это @"модель: имя".text()
Я прочитал, как читать дефисированные имена атрибутов (например, имя_модели) при синтаксическом анализе xml с использованием XmlSlurper и следовал по ссылкам тоже, но ничто не указывает мне на документацию о том, как обрабатывать атрибуты в колонке.
Окончательное решение для атрибутов xml:lang: it.attributes () ['{ http://www.w3.org/XML/1998/namespace} lang']
1 ответ
То, что вы называете "атрибутом в колонке", на самом деле является атрибутом, который находится в пространстве имен. Поведение по умолчанию XmlSlurper - игнорировать пространства имен в том смысле, что когда вы запрашиваете у него имя узла без двоеточия, он найдет узлы с этим локальным именем независимо от пространства имен. Таким образом, вы можете найти это просто
it.@name
находит интересующий вас атрибут. Если это не сработает, вам нужно позвонить declareNamespace
для объекта, который вы вернули из XmlSlurper, для сопоставления префикса с URI пространства имен, который соответствует model:
в документе XML (ищите xmlns:model="http://example.com"
или что угодно в XML)
def xml = new XmlSlurper().parse(...).declareNamespace(
model:"http://example.com")
а потом model:name
должно сработать.