то в результате lCount становится равным нулю. Если же в исходном XML срубить все ссылки на XSD, то lCount после исполнения кода выше показывает то, что должен показывать.
Что я делаю не так?
P.S. И исходный XML, и XML с отрезанными XSD в IE замечатально открывается.
я могу получить путь к нужному мне XML-узлу с документом-накладной как "ns:Document".
Но что делать, если одна Очень Умная Программа дает при создании XML неймспейсам не рекомендованные префиксы ("ns" в примере выше), а что какие-то свои, например, "d3p1" вместо "ns"? Нет, ну то есть понятно, что в этом случае я должен запрашивать путь "d3p1:Document" вместо "ns:Document", но откуда мне угадать, что в этом пути надо поставить именно префикс "d3p1"? Учитывая, что я должен перед парсингом документа указать парсеру эти префиксы в SetProperty() (см. выше)?
Т.е. получается, что для того, чтобы узнать префиксы, я должен распарсить документ, а для того, чтобы распарсить документ, я должен узнать префиксы
Здравствуйте, sushko, Вы писали:
S>Могу ли я говорить, что у этих двух документов разная структура?
Конечно, разная. Ладно бы просто были разные префиксы для одних и тех же неймспейсов — от перестановки слагаемых сумма не меняется. Но тут реально только один общий неймспейс http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01 (который с префиксом ns для первого документа и дефолтный неймспейс для второго), остальное всё разное.
P.S. Посмотрев, куда указывают эти неймспейсы, я не удивлюсь, если там XML ручками собирают через конкатенацию строк. Само собой, тогда получается просто текстовый документ, а не XML stream.
А если бы структура была одинаковая, но с разными префиксами, то как при помощи MSXML мне ее надо было бы читать? Ведь узел "Documents" может называться и "ns:Documents", и "d3p1:Documents", и как угодно еще? Как мне получить доступ к этому узлу, учитывая, что на момент компиляции своей программы я не знаю префикса? Как мне получить этот префикс из XML-документа?
Здравствуйте, sushko, Вы писали:
S>А если бы структура была одинаковая, но с разными префиксами, то как при помощи MSXML мне ее надо было бы читать? Ведь узел "Documents" может называться и "ns:Documents", и "d3p1:Documents", и как угодно еще? Как мне получить доступ к этому узлу, учитывая, что на момент компиляции своей программы я не знаю префикса? Как мне получить этот префикс из XML-документа?
Не скажу за msxml, но в нормальных парсерах все просто.
uri схемы у тебя есть, имя ноды у тебя есть.
биндишь uri к произвольному префиксу, составляешь xpath запрос с этим префиксом:
Здравствуйте, dead0k, Вы писали:
D>биндишь uri к произвольному префиксу, составляешь xpath запрос с этим префиксом:
То ли в MSXML так не работает, то ли структура документа "у врага" действительно другая. Проверить под отладчиком не могу, т.к. оригинального XML-документа у меня нет, есть только на компьютере пользователя, которого я даже не помню, как зовут.