Ссылка на необъявленный префикс пространства имен при синтаксическом анализе MSXML

Как мне решить проблему

Reference to undeclared namespace prefix: '%s'

с реализацией Microsoft msxml?


I ' m, используя XML-канал с правительственного веб-сайта, который содержит значения, которые мне нужно проанализировать. Xml содержит пространства имен:



    
        
            
                1.0351
                CAD
                USD
                Bank of Canada noon rate
                2011-05-09T12:15:00-04:00
            
        
    

Выполнение запроса XPath:

/rdf:RDF/item/cb:statistics/cb:exchangeRate/cb:targetCurrency

завершается ошибкой:

Reference to undeclared namespace prefix: 'rdf'

Изменить :

Если я редактирую исходный XML, чтобы удалить любое использование пространств имен:



    
        
            
                1.0351
                CAD
                USD
                Bank of Canada noon rate
                2011-05-09T12:15:00-04:00
            
        
    

Запрос / rdf / item / statistics / exchangeRate / baseCurrency не дает сбоев и возвращает узлы:

CAD

Как мне заставить Microsoft XML работать с пространствами имен?


Edit 2

У меня есть попытался добавить SelectionNamespaces к объекту DOMDocument:

doc.setProperty('SelectionNamespaces', 'xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cb="http://www.cbwiki.net/wiki/index.php/Specification_1.1"');

Теперь запрос xpath не завершается ошибкой, но он также не возвращает никаких узлов:

nodes = doc.selectNodes('/rdf:RDF/item/cb:statistics/cb:exchangeRate/cb:targetCurrency');

См. также

16
задан Community 23 May 2017 в 11:45
поделиться