powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Подскажите как в XML Документе заменить теги name1. name2, name3 в name,name,name
21 сообщений из 21, страница 1 из 1
Подскажите как в XML Документе заменить теги name1. name2, name3 в name,name,name
    #38495356
Pruvetik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую.

Подскажите каким образом, имея на руках довольно большой XML файл, его немного поменять в серединке.

Т.е. такой:

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<Root>
 <Path1>
  <Path2>
   <name1>
   </name1>
   <name2>
   </name2>
   <name3>
   </name4>
  </Path2>
 </Path1>
</Root>



Преобразовать в такой:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<Root>
 <Path1>
  <Path2>
   <name>
   </name>
   <name>
   </name>
   <name>
   </name>
  </Path2>
 </Path1>
</Root>



Тут нужно использовать XLST или что то по проще ?
...
Рейтинг: 0 / 0
Подскажите как в XML Документе заменить теги name1. name2, name3 в name,name,name
    #38495524
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pruvetik,

если вопрос стоит так как он стоит , то реплэйса достаточно
...
Рейтинг: 0 / 0
Подскажите как в XML Документе заменить теги name1. name2, name3 в name,name,name
    #38495526
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можешь string.Replace() попробовать.
...
Рейтинг: 0 / 0
Подскажите как в XML Документе заменить теги name1. name2, name3 в name,name,name
    #38495555
Pruvetik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо.
Но там внутри каждого "name" большой вложенный кусок XML со своими данными. Т.е. в полне могут попадаться свои внутренние "name".
Replace, это конечно из пушки по воробьям будет. Т.е. накроет все, без разбору, в том числе внутренние тэги и данные.

Сейчас вот смотрю примеры Linq To XML (101 LINQ Samples). Думаю LINQ лучше попробовать.

По идее, получится не сложно. Сначала селектим родительский нод (в нашем случае root\path1\path2) и потом уже делаем Conversion его составляющим.
...
Рейтинг: 0 / 0
Подскажите как в XML Документе заменить теги name1. name2, name3 в name,name,name
    #38495634
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PruvetikТут нужно использовать XLST или что то по проще ?

XSLT проще и правильнее.

Можно загрузить документ в память, переименовать элементы и снова сохранить

Можно в параллель XmlReader + XmlWriter. Быстрее будет работать на больших файлах, но сложнее в рализации
...
Рейтинг: 0 / 0
Подскажите как в XML Документе заменить теги name1. name2, name3 в name,name,name
    #38495642
Pruvetik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79,

Не знаю XLST :(
Надо бы изучить.

Я вот думал изначально, что нужно наверное XLST. Раз идут какие то преобразования. Но не зная его, решил сделать через LINQ.
...
Рейтинг: 0 / 0
Подскажите как в XML Документе заменить теги name1. name2, name3 в name,name,name
    #38495644
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PruvetikНе знаю XLST :(
Надо бы изучить.
вот на живом примере и изучи
...
Рейтинг: 0 / 0
Подскажите как в XML Документе заменить теги name1. name2, name3 в name,name,name
    #38495715
Pruvetik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я думаю вначале все же сделать через LINQ, а потом тоже самое через XLST. Потом появится свободное время, хватит, чтобы изучить базовый функционал.
Просто сейчас времени нет, чтобы с нуля все сделать на XLST.

Подскажите пожалуйста по поводу LINQ. Вопрос связан с NameSpace

Имеется XML

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<s:Root xmlns:s="http://www.adventure-works.com">
 <Path1>
  <Path2>
   <name1>
   </name1>
   <name2>
   </name2>
   <name3>
   </name4>
  </Path2>
 </Path1>
</s:Root>



Пытаюсь добраться до Path2. Но уже с самого начала тупик.

Такой код, не работает:
Код: c#
1.
2.
3.
XNamespace space = xDoc.Root.Name.NamespaceName;

XElement tempElem = xDoc.Element(space + "root");



Далее планирую сделать
Код: c#
1.
tempElem.Element("path1").Element("Path2").Elements();


(Кстати, а нельзя ли как то сократить это в LINQ ? Чтобы сразу прийти к Path2)

Подскажите, как эту проблемку решить (с неймспейсами) пожалуйста.
...
Рейтинг: 0 / 0
Подскажите как в XML Документе заменить теги name1. name2, name3 в name,name,name
    #38495764
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pruvetik,

может Xml поправите?

Чудеса:
<name3>
</name4>
...
Рейтинг: 0 / 0
Подскажите как в XML Документе заменить теги name1. name2, name3 в name,name,name
    #38495779
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
        static void Main(string[] args)
        {
            XNamespace ns = "http://www.adventure-works.com";

            var doc = XDocument.Parse(Resource1.xml);
            XElement root = doc.Element(ns + "Root");
        }
...
Рейтинг: 0 / 0
Подскажите как в XML Документе заменить теги name1. name2, name3 в name,name,name
    #38495807
Pruvetik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79Pruvetik,

может Xml поправите?

Чудеса:
<name3>
</name4>

Мне такой XML приходит. и я как раз таки и хочу поправить :)
Я не могу повлиять, чтобы он приходил по другому.
...
Рейтинг: 0 / 0
Подскажите как в XML Документе заменить теги name1. name2, name3 в name,name,name
    #38495813
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PruvetikМне такой XML приходит.

Это не XML тогда. Вообще. Тогда только String.Replace
...
Рейтинг: 0 / 0
Подскажите как в XML Документе заменить теги name1. name2, name3 в name,name,name
    #38495839
Pruvetik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79PruvetikМне такой XML приходит.

Это не XML тогда. Вообще. Тогда только String.Replace

Да нет. Это XML. Только его тоже уже правили, и ко мне он в таком виде приходит от другого разработчика :)


Извините пожалуйста.

Снова вопрос про неймспейс.

Как быть с такой проблемой ?

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<s:Root xmlns:s="http://www.adventure-works.com">
 <Path1 xmlns:f="www.fourthcoffee.com">
  <Path2>
   <name1>
   </name1>
   <name2>
   </name2>
   <name3>
   </name3>
  </Path2>
 </Path1>
</s:Root>


Обратите внимание, что "s:Root" и "Path1" - т.е. во втором случае явно не указано имя.

Код: c#
1.
2.
3.
4.
5.
6.
7.
XElement root = doc.Element(ns + "Root");  // работает !
XElement node = root.Element ("Path2"); // Уже нет !
//пробовал и так:
XElement node = root.Element (ns+"Path2");
// и так
XNamespace ns1 = "www.fourthcoffee.com";
XElement node = root.Element (ns1+"Path2");


все равно node == null.
...
Рейтинг: 0 / 0
Подскажите как в XML Документе заменить теги name1. name2, name3 в name,name,name
    #38495840
Pruvetik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PruvetikОбратите внимание, что "s:Root" и "Path1" - т.е. во втором случае явно не указано имя.


Пространство, имелось ввиду.
...
Рейтинг: 0 / 0
Подскажите как в XML Документе заменить теги name1. name2, name3 в name,name,name
    #38495845
Pruvetik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pruvetik<s:Root xmlns:s="www.fourthcoffee.com">


<s:Root xmlns:s=" http://www.fourthcoffee.com">
Если это важно.
...
Рейтинг: 0 / 0
Подскажите как в XML Документе заменить теги name1. name2, name3 в name,name,name
    #38495852
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PruvetikКак быть с такой проблемой ?

где проблема то?

Код: c#
1.
2.
3.
4.
5.
6.
            XNamespace ns = "http://www.adventure-works.com";
            XNamespace f = "www.fourthcoffee.com";   // это вообще лишняя строка

            XDocument doc = XDocument.Parse(Resource1.xml);
            XElement root = doc.Element(ns + "Root");
            XElement path1 = root.Element("Path1");
...
Рейтинг: 0 / 0
Подскажите как в XML Документе заменить теги name1. name2, name3 в name,name,name
    #38495855
Pruvetik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79,

У меня в таком коде path1 равен null почему то. Вот блин.

Буду разбираться. Спасибо за помощь !
...
Рейтинг: 0 / 0
Подскажите как в XML Документе заменить теги name1. name2, name3 в name,name,name
    #38495861
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PruvetikУ меня в таком коде path1 равен null почему то. Вот блин.

Естественно. Ведь вы обращаетесь к Path2. А Path2 - это root/path1/path2

path1 = root.Element(path1)
path2 = path1.Element(path2)
...
Рейтинг: 0 / 0
Подскажите как в XML Документе заменить теги name1. name2, name3 в name,name,name
    #38495875
Pruvetik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79,

Спасибо, что увидели эту опечатку, но в коде я ее уже поправил.

В общем дело оказалось в 3ем (Третьем ! Черт его подери) неймспейсе по умолчанию )

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<s:Root xmlns:s="http://www.adventure-works.com">
 <Path1 xmlns:f="http://www.fourthcoffee.com" .... еще 15 атрибутов  xmlns="http://www.HelloWorld.com">
  <Path2>
   <name1>
   </name1>
   <name2>
   </name2>
   <name3>
   </name3>
  </Path2>
 </Path1>
</s:Root>



Ну и рабочий код:
Код: c#
1.
2.
3.
4.
5.
XNamespace ns = "http://www.adventure-works.com";
XElement root = doc.Element(ns + "Root");  // работает !

XNamespace ns1 = "http://www.HelloWorld.com";
XElement node = root.Element (ns1+"Path1"); // тоже заработало



Все заработало.
Время поджимает, а я с этой ерундой маюсь. Спешу и не вижу важных деталей :(

Извините. И большое спасибо за помощь ! Не сталкивался я пока с такими сложными XMLками.
...
Рейтинг: 0 / 0
Подскажите как в XML Документе заменить теги name1. name2, name3 в name,name,name
    #38495890
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PruvetikНе сталкивался я пока с такими сложными XMLками.
?????

:-)


Моя последняя Xml-ка (самый простой запрос):
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
<re:Request xmlns:re="http://xxxxxxxx/YYYYYYYY" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="xxxxxxxx_20130830023902312" sourceSystem="XXXXXXX" valueDate="2013-08-27">
  <re:PricingMeasure>NPV_RUB_CBR</re:PricingMeasure>
  <re:Trades>
    <re:Trade id="123" xsi:type="re:FXForward">
      <re:PrimaryCurrency>RUB</re:PrimaryCurrency>
      <re:QuotingCurrency></re:QuotingCurrency>
      <re:PrimaryAmount></re:PrimaryAmount>
      <re:QuotingAmount>100.11</re:QuotingAmount>
      <re:SettleDate>2013-08-11</re:SettleDate>
      <re:Rate>1.33</re:Rate>
    </re:Trade>
    <re:Trade id="456" xsi:type="re:FXSwap">
      <re:PrimaryCurrency>EUR</re:PrimaryCurrency>
      <re:QuotingCurrency>CAD</re:QuotingCurrency>
      <re:PrimaryAmount>356.13</re:PrimaryAmount>
      <re:QuotingAmount></re:QuotingAmount>
      <re:NearDate>2013-08-01</re:NearDate>
      <re:FarDate></re:FarDate>
      <re:NearRate></re:NearRate>
      <re:FarRate>1.51</re:FarRate>
      <re:FarQuotingAmount>120.1</re:FarQuotingAmount>
    </re:Trade>
  </re:Trades>
</re:Request>
...
Рейтинг: 0 / 0
Подскажите как в XML Документе заменить теги name1. name2, name3 в name,name,name
    #38495906
Pruvetik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79,

:) Да уж.

В целом то, понимаете, ничего такого критичного то в большом XML нету.
Знай себе задавай путь правильный и получай нужный нод.

Неймспейсы все испортили :)
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Подскажите как в XML Документе заменить теги name1. name2, name3 в name,name,name
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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