XPath не находит узлы, вроде как namespace мешает
От: Mikolator  
Дата: 20.11.07 12:13
Оценка:
XML файл.
<result xmlns="http://www.usasax.com/smsflatpostpaid/types">
    <packages>
        <item>
            <dealerCode>OM01A00010</dealerCode>
            <isDefault>false</isDefault>
            <packageCode>SMSOMNI</packageCode>
            <packageDesc>SMSFlatPostPaid Omnitel kryptis</packageDesc>
            <packageRestrictionCode>0</packageRestrictionCode>
        </item>
        <item>
            <dealerCode>OM01A00010</dealerCode>
            <isDefault>false</isDefault>
            <packageCode>SMSVISI</packageCode>
            <packageDesc>SMSFlatPostPaid visu tinklu kryptis</packageDesc>
            <packageRestrictionCode>0</packageRestrictionCode>
        </item>
    </packages>
</result>


Код. Создаём DOM объект и в него загружаем XML. Потом пытаюсь получить список элементов
Dim dom0 As MSXML2.DOMDocument60
    Dim xmllist As MSXML2.IXMLDOMNodeList
    
    Set dom0 = New DOMDocument60
    dom0.setProperty "SelectionLanguage", "XPath"
    dom0.Load ("c:\out.xml")
    Set xmllist = dom0.getElementsByTagName("item")

Проблема в том, что xmllist остаётся пустым. Но если в XML файле убрать атрибут xmlns, то все работает прекрасно. Что не так? Почему не работает с этим xmlns???

Так все ОК.

<result>
    <packages>
        <item>
            <dealerCode>OM01A00010</dealerCode>
            <isDefault>false</isDefault>
            <packageCode>SMSOMNI</packageCode>
            <packageDesc>SMSFlatPostPaid Omnitel kryptis</packageDesc>
            <packageRestrictionCode>0</packageRestrictionCode>
        </item>
        <item>
            <dealerCode>OM01A00010</dealerCode>
            <isDefault>false</isDefault>
            <packageCode>SMSVISI</packageCode>
            <packageDesc>SMSFlatPostPaid visu tinklu kryptis</packageDesc>
            <packageRestrictionCode>0</packageRestrictionCode>
        </item>
    </packages>
</result>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.