Информация об изменениях

Сообщение XML работает, XML+XSD - нет от 08.12.2015 18:34

Изменено 08.12.2015 18:35 sushko

Есть у меня XML (см. ниже). Я его пытаюсь прочитать при помощи MsXmlEngine/C++ примерно следующим образом:

CoCreateInstance(__uuidof(DOMDocument60), NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&m_pDocument));
m_pDocument->put_async(VARIANT_FALSE);  
m_pDocument->put_validateOnParse(VARIANT_FALSE);
m_pDocument->put_resolveExternals(VARIANT_FALSE);
m_pDocument->load(varFileName, &varStatus);
m_pDocument->selectNodes((bstr_t)"//Documents/Document/TTNInformBReg/Header/*", &pNodes);
long lCount = 0;
pNodes->get_length(&lCount);


то в результате lCount становится равным нулю. Если же в исходном XML срубить все ссылки на XSD, то lCount после исполнения кода выше показывает то, что должен показывать.

Что я делаю не так?

Вот исходный XML:

<ns:Documents xmlns:wbr="http://fsrar.ru/WEGAIS/TTNInformBReg" xmlns:pref="http://fsrar.ru/WEGAIS/ProductRef" xmlns:oref="http://fsrar.ru/WEGAIS/ClientRef" xmlns:ns="http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ns:Owner>
<ns:FSRAR_ID>3463047</ns:FSRAR_ID>
</ns:Owner>
<ns:Document>
<ns:TTNInformBReg>
<wbr:Header xmlns:wbr="http://fsrar.ru/WEGAIS/TTNInformBReg" xmlns:pref="http://fsrar.ru/WEGAIS/ProductRef" xmlns:oref="http://fsrar.ru/WEGAIS/ClientRef" xmlns:ns="http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<wbr:Identity>1</wbr:Identity>
<wbr:WBRegId>0000002167</wbr:WBRegId>
<wbr:EGAISFixNumber>201500000000002</wbr:EGAISFixNumber>
<wbr:EGAISFixDate>2015-03-18</wbr:EGAISFixDate>
<wbr:WBNUMBER>9999</wbr:WBNUMBER>
<wbr:WBDate>2015-02-16</wbr:WBDate>
<wbr:Shipper>
<oref:ClientRegId>00040218</oref:ClientRegId>
<oref:INN>0260009319</oref:INN>
<oref:KPP>026001001</oref:KPP>
<oref:FullName>Общество с Ограниченной ответственностью &quot;Радуга&quot;(Магазин)</oref:FullName>
<oref:ShortName>Радуга</oref:ShortName>
<oref:address>
<oref:Country>643</oref:Country>
<oref:RegionCode>02</oref:RegionCode>
<oref:description>643,,Москва ул. Большие пробки,31/1,,,</oref:description>
</oref:address>
</wbr:Shipper>
<wbr:Consignee>
<oref:ClientRegId>00040217</oref:ClientRegId>
<oref:INN>5907027035</oref:INN>
<oref:KPP>590701001</oref:KPP>
<oref:FullName>ООО &quot;Кое-Как&quot; (склад)</oref:FullName>
<oref:ShortName>?</oref:ShortName>
<oref:address>
<oref:Country>643</oref:Country>
<oref:RegionCode>59</oref:RegionCode>
<oref:description>643,,Москва, Спартаковская,12,,,</oref:description>
</oref:address>
</wbr:Consignee>
</wbr:Header>
<wbr:Content xmlns:wbr="http://fsrar.ru/WEGAIS/TTNInformBReg" xmlns:pref="http://fsrar.ru/WEGAIS/ProductRef" xmlns:oref="http://fsrar.ru/WEGAIS/ClientRef" xmlns:ns="http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<wbr:Position>
<wbr:Identity>1</wbr:Identity>
<wbr:InformBRegId>000000000002142</wbr:InformBRegId>
</wbr:Position>
</wbr:Content>
</ns:TTNInformBReg>
</ns:Document>
</ns:Documents>
XML работает, XML+XSD - нет
Есть у меня XML (см. ниже). Я его пытаюсь прочитать при помощи MsXmlEngine/C++ примерно следующим образом:

CoCreateInstance(__uuidof(DOMDocument60), NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&m_pDocument));
m_pDocument->put_async(VARIANT_FALSE);  
m_pDocument->put_validateOnParse(VARIANT_FALSE);
m_pDocument->put_resolveExternals(VARIANT_FALSE);
m_pDocument->load(varFileName, &varStatus);
m_pDocument->selectNodes((bstr_t)"//Documents/Document/TTNInformBReg/Header/*", &pNodes);
long lCount = 0;
pNodes->get_length(&lCount);


то в результате lCount становится равным нулю. Если же в исходном XML срубить все ссылки на XSD, то lCount после исполнения кода выше показывает то, что должен показывать.

Что я делаю не так?

P.S. И исходный XML, и XML с отрезанными XSD в IE замечатально открывается.

Вот исходный XML:

<ns:Documents xmlns:wbr="http://fsrar.ru/WEGAIS/TTNInformBReg" xmlns:pref="http://fsrar.ru/WEGAIS/ProductRef" xmlns:oref="http://fsrar.ru/WEGAIS/ClientRef" xmlns:ns="http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ns:Owner>
<ns:FSRAR_ID>3463047</ns:FSRAR_ID>
</ns:Owner>
<ns:Document>
<ns:TTNInformBReg>
<wbr:Header xmlns:wbr="http://fsrar.ru/WEGAIS/TTNInformBReg" xmlns:pref="http://fsrar.ru/WEGAIS/ProductRef" xmlns:oref="http://fsrar.ru/WEGAIS/ClientRef" xmlns:ns="http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<wbr:Identity>1</wbr:Identity>
<wbr:WBRegId>0000002167</wbr:WBRegId>
<wbr:EGAISFixNumber>201500000000002</wbr:EGAISFixNumber>
<wbr:EGAISFixDate>2015-03-18</wbr:EGAISFixDate>
<wbr:WBNUMBER>9999</wbr:WBNUMBER>
<wbr:WBDate>2015-02-16</wbr:WBDate>
<wbr:Shipper>
<oref:ClientRegId>00040218</oref:ClientRegId>
<oref:INN>0260009319</oref:INN>
<oref:KPP>026001001</oref:KPP>
<oref:FullName>Общество с Ограниченной ответственностью &quot;Радуга&quot;(Магазин)</oref:FullName>
<oref:ShortName>Радуга</oref:ShortName>
<oref:address>
<oref:Country>643</oref:Country>
<oref:RegionCode>02</oref:RegionCode>
<oref:description>643,,Москва ул. Большие пробки,31/1,,,</oref:description>
</oref:address>
</wbr:Shipper>
<wbr:Consignee>
<oref:ClientRegId>00040217</oref:ClientRegId>
<oref:INN>5907027035</oref:INN>
<oref:KPP>590701001</oref:KPP>
<oref:FullName>ООО &quot;Кое-Как&quot; (склад)</oref:FullName>
<oref:ShortName>?</oref:ShortName>
<oref:address>
<oref:Country>643</oref:Country>
<oref:RegionCode>59</oref:RegionCode>
<oref:description>643,,Москва, Спартаковская,12,,,</oref:description>
</oref:address>
</wbr:Consignee>
</wbr:Header>
<wbr:Content xmlns:wbr="http://fsrar.ru/WEGAIS/TTNInformBReg" xmlns:pref="http://fsrar.ru/WEGAIS/ProductRef" xmlns:oref="http://fsrar.ru/WEGAIS/ClientRef" xmlns:ns="http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<wbr:Position>
<wbr:Identity>1</wbr:Identity>
<wbr:InformBRegId>000000000002142</wbr:InformBRegId>
</wbr:Position>
</wbr:Content>
</ns:TTNInformBReg>
</ns:Document>
</ns:Documents>