Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Как проверить есть ли такой же узел в...


Автор: Druid 4.6.2005, 14:35
smile Как проверить есть ли такой же узел (тот же путь и имя) в другом XML-файле?
(Имея в распоряжении указатель на какой-нибудь элемент первого XML-файла)

И особенно часть этого вопроса:
smile Как найти путь узла XML-файла?

Автор: mr.DUDA 4.6.2005, 21:46
про XPath читал в MSDN ? если нет, то почитай.

Автор: Druid 4.6.2005, 23:26
Немного читал.
Предположим, есть XML-файл:
Цитата

<?xml version="1.0" encoding="utf-8" ?>
<books>
<book>
  <title>tit
  <inside>one</inside>
      </title>
      <author>Tom Archer</author>
</book>
</books>

Если я правильно понял, команда:
Код

MSXML::IXMLDOMDocumentPtr pDomDocument;
MSXML::IXMLDOMNodePtr pNode;
... ...
pNode = pDomDocument->selectSingleNode(L"books/book[title = \"tit\"]");

должна дать указатель на нужный мне узел. Но она возвращает 0.
smile Что здесь не так? : (

Автор: stab 6.6.2005, 02:06
Надо переместить значение tit в атрибут или переместить\убрать <inside> или мучаться с такими XPath запросами:

books/book[title='tit\r\n\t\t\t\t\t\t\tone']

smile При проверках используется текст узла и всех его детей (InnerText), а не только самого узла.

Автор: Druid 6.6.2005, 21:20
cully, а что значит \t\t\t\t\t\t\tone ?

На счёт того, что он берёт текст со всех дочерних включительно - это я позже догадался, но странно, неужели MicroSoft'овцы выпустили настолько несовершенную обработку XML, что она даже не может просто найти узел по имени и значению ?! smile
Об остальном я уже молчу, практически всё приходистя делать вручную...

P.S.: переместить tit не выйдет. Прога должна работать на любом XML-файле.

Автор: stab 6.6.2005, 22:13
Цитата(Druid @ 6.6.2005, 18:20)
cully, а что значит \t\t\t\t\t\t\tone ?

Это InnerText узла <title>.
Добавлено @ 22:15

точнее, его часть

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)