2013-04-26 3 views
0

При попытке найти определенный узел в документе XML у меня возникают проблемы с пространствами имен. Вот код, я использую:Проблемы с пространствами имен в XML-поиске, используя DOM-категорию

Упрощенный XML-файл:

<?xml version="1.0" encoding="UTF-8"?> 
<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0"> 
    <map:components> 
     <map:generators> 
      ... 
      <map:generator name="FinsXMLGenerator"/> 
     </map:generators> 
    ... 

Я пытаюсь получить следующий узел:

<map:generator name="FinsXMLGenerator"/> 

Используя следующую DOMCategory окончания:

def closure = { sitemap -> 
    def result = sitemap.'map:sitemap'.'map:components'.'map:generators'.'map:generator'.'@name'.find({ 
     it.text() == 'FinsXMLGenerator' 
    }); 
    return result; 
} 

Я написал много таких закрытий без пространств имен в XML, которые отлично работают. Но пространства имен разрушают все.
У меня нет ошибок, результат равен нулю. Может ли кто-нибудь помочь мне исправить путь - например,

sitemap.'map:sitemap'... 

Я использую Groovy.

ответ

1

Try:

def node = use(DOMCategory) { 
    sitemap.'map:components'.'map:generators'.'map:generator'.find { 
    it.getAttribute('name') == 'FinsXMLGenerator' 
    } 
} 
+0

Ах, наконец-то она работает, спасибо тим! Ха-ха, я заметил, что ты тот, кто ответил на все мои вопросы до сих пор.^ –

+1

Рад помочь :-) –

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