powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / выборка нодов из xml через XPath
3 сообщений из 3, страница 1 из 1
выборка нодов из xml через XPath
    #35047917
alexxey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток... столкнулся с проблемой при обработке XML.
Есть задача прочитать XML и обработать определенные ноды на C# "siteMapNode" - при условии что уровень вложенности нодов может быть достаточно большой (обычно порядка 6-7)

Пример кода
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
<?xml version="1.0" encoding="utf-8"?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0">
  <StyleNodes>
  </StyleNodes>
  <siteMapNode url="~/default.html" name="default">
    <siteMapNodes>
      <siteMapNode name="aboutus" url="~/aboutus.html">
      </siteMapNode>
      <siteMapNode type="custom" name="contactus" url="~/contactus.html">
        <Controls>
          <Control name="ContactUsForm" placeholder="Center">
          </Control>
        </Controls>
      </siteMapNode>
      <siteMapNode type="file" name="sitemap" url="~/sitemap.html">
        <Controls>
          <Control name="SiteMap" placeholder="Center">
          </Control>
        </Controls>
      </siteMapNode>
      ...
  </siteMapNodes>
 </sitemapNode>
 </siteMap>

на данный момент задача решалась путем тупого перебора всех нодов(через XPathNavogator), сравнения их имени на "siteMapNode" и все...но хочется сделать грамотно (тем более что кол-во нодов может быть очень большим). Меня интересуют ноды только типа <siteMapNode>, но выцепить их не могу...

В итоге возникает вопрос - каким должен быть XPathIterator, чтобы выгрести ноды такого типа? Причем насколько понял, тут довольно важную роль играет наличие неймспейса. Интересует в оcновном какое правильное решение будет в двнном случае, а именно что применять, поскольку так выгрести ноды и не получилось
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
            modFile.Load(file.FullName);
            XPathNavigator navigator = modFile.CreateNavigator();
            XmlNamespaceManager manager = new XmlNamespaceManager(navigator.NameTable);
            manager.AddNamespace("sm", "http://schemas.microsoft.com/AspNet/SiteMap-File-1.0");
            navigator.MoveToFirstChild();
            XPathNodeIterator nodes = navigator.Select("/sm:siteMapNode", manager);
            if (nodes.MoveNext())
            {
             ...
             }
Заранее спасибо.
...
Рейтинг: 0 / 0
выборка нодов из xml через XPath
    #35048036
gedeminas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а так:
Код: plaintext
navigator.Select("//sm:siteMapNode", manager);
...
Рейтинг: 0 / 0
выборка нодов из xml через XPath
    #35048369
alexxey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо большое... вот что значит все таки незнание матчасти :)
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / выборка нодов из xml через XPath
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]