2014-01-02 1 views
0

У меня есть следующие XMLGroovy XmlSlurper не может получить атрибут языки с пространством имен по умолчанию

<group xmlns="http://www.cdisc.org/ns/odm/v1.3"> 
    <item> 
     <text xml:lang="en">Mild</text> 
     <text xml:lang="fr">Legere</text> 
    </item> 
<group> 

Я хочу, чтобы все «EN» строку из XML. Я разбор его с помощью следующего кода заводного

def doc = new XmlSlurper().parse(inputstream).declareNamespace(xmlns:'http://www.cdisc.org/ns/odm/v1.3') 

List<String> text = [] 
def s = doc.item.find{ [email protected]":lang" = "en"}.each { 
    text.add(it.text()) 
} 

println text 

Проблема заключается в том, что швы, игнорируя атрибут. Я зарегистрировал пространство имен по умолчанию, я пробовал комбинации xml: lang,: lang, lang в закрытии поиска, но без радости.

Означает ли какое-либо тело то, что я делаю неправильно.

Благодаря

ответ

1

Приставка xml всегда относится к пространству имен http://www.w3.org/XML/1998/namespace - это фиксированный in the namespaces specification и не должны быть объявлены в документе XML.

Так что попробуйте

def doc = new XmlSlurper().parse(inputstream).declareNamespace(
    xml:'http://www.w3.org/XML/1998/namespace') 

, а затем xml:lang должны работать, как вы ожидаете.

+0

Привет, я пробовал это, но это не сработало. Если я вызываю атрибуты(). Size() на текстовом узле, я получаю 1, но когда я делаю getAt (0), он возвращает null. Я также попытался разобрать с XmlParser, и он дает тот же результат. –

Смежные вопросы