Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как обойти все узлы XML вместе в вложениями 
:(
    Опции темы
San4o_Pan4o
Дата 22.9.2009, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 16.12.2007

Репутация: нет
Всего: нет



В общем проблема такая: есть xml, получаемый с сервака, нужно в нем переименовать некоторые атрибуты (чтобы стали без префиксов). Юзаю проcто цикл foreach, но так он во внутрь не заходит, он только проверяет некоторый <tag1>...</tag1>, а то что внутри еще миллион тагов ему пофиг. Как сделать, чтобы было не пофиг?)
вот мой код:
Код

XmlDocument xdoc = new XmlDocument();
xdoc.LoadXml(xmlresp);
string namespase = "http://www.w3.org/1999/02/22-rdf-syntax-ns#";
foreach (XmlElement xel in xdoc.DocumentElement.ChildNodes[1])
{
  if (xel.NodeType != XmlNodeType.Element) continue;
  if (xel.HasAttribute("about", namespase))
  {
    string id = xel.GetAttribute("about", namespase);
    xel.RemoveAttribute("about", namespase);
    XmlAttribute new_attr = xdoc.CreateAttribute("id");
    xel.Attributes.Append(new_attr);
    xel.SetAttribute("id", id);
  }
}


и пример прилетающего xml:
Код

<?xml version='1.0' encoding='utf-8'?>
<dataresponse rdf:dummy="" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <request>
    <param name="c">GetItem</param>
    <param name="id">mag_090911114613_1003</param>
  </request>
  <data>
    <person rdf:about="mag_090911114613_1003">
      <name xml:lang="ru">Марчук Александр Гурьевич</name>
      <reflected inverse-resource="mag_090911114613_1004">
        <reflection rdf:about="mag_090911114613_1004">
          <in-doc rdf:resource="source_test_cassettepds08b2333cbda02eeb36fabb3cf3bd2cc4">
            <photo-doc rdf:about="source_test_cassettepds08b2333cbda02eeb36fabb3cf3bd2cc4">
              <name xml:lang="ru">source_test_cassette 0001 0003</name>
              <published>iiss://[email protected]/0001/0001/0003</published>
              <comment xml:lang="ru">F:\archive\IIS-history-archive\mixture\CC280.jpg</comment>
            </photo-doc>
          </in-doc>
        </reflection>
      </reflected>
      <reflected inverse-resource="mag_090911114613_1014">
        <reflection rdf:about="mag_090911114613_1014">
          <in-doc rdf:resource="source_test_cassettepdsd27d173a8f095177540e53ce8faf33bd">
            <photo-doc rdf:about="source_test_cassettepdsd27d173a8f095177540e53ce8faf33bd">
              <name xml:lang="ru">source_test_cassette 0001 0010</name>
              <published>iiss://[email protected]/0001/0001/0010</published>
              <comment xml:lang="ru">F:\archive\IIS-history-archive\mixture\gp_tn_dscn3064.jpg</comment>
            </photo-doc>
          </in-doc>
        </reflection>
      </reflected>
    </person>
  </data>
</dataresponse>


PM MAIL   Вверх
Rohoss
Дата 22.9.2009, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начальник интернета
***


Профиль
Группа: Завсегдатай
Сообщений: 1308
Регистрация: 9.10.2006
Где: Matrix

Репутация: 2
Всего: 18



San4o_Pan4o, пиши рекурсивный метод 


--------------------
Файловый менеджер Explorer.Net скачать  video
PM ICQ   Вверх
diadiavova
Дата 22.9.2009, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 31
Всего: 142



Воспользуйся волшебным методом SelectNodes.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
San4o_Pan4o
Дата 23.9.2009, 06:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 16.12.2007

Репутация: нет
Всего: нет



что же волшебного  в SelectNodes, если я априори не знаю какие там узлы? А насчет рекурсии уже думал, просто вдруг есть более красивый метод))
PM MAIL   Вверх
diadiavova
Дата 23.9.2009, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 31
Всего: 142



Код

xdoc.DocumentElement.SelectNodes(".//*");

 smile 


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
San4o_Pan4o
Дата 23.9.2009, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 16.12.2007

Репутация: нет
Всего: нет



diadiavova, спасибо большое! Блин, так затупить... smile  Выручил просто! smile 
PM MAIL   Вверх
diadiavova
Дата 23.9.2009, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 31
Всего: 142



 smile 


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0720 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.