Подскажите как обработать XML

Nekit

Client
Регистрация
28.02.2011
Сообщения
46
Благодарностей
1
Баллы
8
Есть очень острая необходимость, скачать с сайта поставщика xml фаил - обработать его и загрузить на свой сайт csv файл.

Друзья подскажите где можно найти хелп по обработке xml

или может кто пнет в нужную сторону
 

Nekit

Client
Регистрация
28.02.2011
Сообщения
46
Благодарностей
1
Баллы
8
может кто сталкивался с такими задачами, помогите
 

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
901
Баллы
113
с# вам в помощь, но можно обойтись и регулярками если данные везде заполнены одинаково. Готового решения нет к сожалению
 

bigcajones

Client
Регистрация
09.02.2011
Сообщения
1 216
Благодарностей
683
Баллы
113
C # code ...

Using System.Xml in GAC

Код:
 var text = project.Variables ["xml"]. Value;
System.Xml.XmlDocument doc = new System.Xml.XmlDocument ();
    doc.LoadXml (text);

    StringBuilder sb = new StringBuilder ();
    foreach (System.Xml.XmlNode node in doc.DocumentElement.ChildNodes)
    {
        sb.Append (char.ToUpper (node.Name [0]));
        sb.Append (node.Name.Substring (1));
        sb.Append ('');
        sb.AppendLine (node.InnerText);
    }

return sb;
 

Nekit

Client
Регистрация
28.02.2011
Сообщения
46
Благодарностей
1
Баллы
8
еще вопрос туповатый может а как интегрировать этот код С# в проект
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113

Nekit

Client
Регистрация
28.02.2011
Сообщения
46
Благодарностей
1
Баллы
8
rostonix спасибо
не подскажите к кому можно обратиться чтобы написал обработчик xml?
или кто объяснит как этот код использовать, который выше приведен
 

CSS

Client
Регистрация
22.05.2010
Сообщения
1 327
Благодарностей
663
Баллы
113
rostonix спасибо
не подскажите к кому можно обратиться чтобы написал обработчик xml?
или кто объяснит как этот код использовать, который выше приведен
Вышли в PM мне XML файл, посмотрю что можно сделать
 

lucen

Пользователь
Регистрация
18.03.2014
Сообщения
132
Благодарностей
9
Баллы
18
rostonix спасибо
не подскажите к кому можно обратиться чтобы написал обработчик xml?
или кто объяснит как этот код использовать, который выше приведен
у меня код работает отлично
 

7make

Client
Регистрация
25.06.2011
Сообщения
1 547
Благодарностей
1 311
Баллы
113

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с 7make какие-либо сделки.

Последнее редактирование:

Nekit

Client
Регистрация
28.02.2011
Сообщения
46
Благодарностей
1
Баллы
8
7make, СПАСИБО!!!
 

Lite

Client
Регистрация
17.10.2013
Сообщения
283
Благодарностей
89
Баллы
28
Апну тему, тоже озадачился.
Код:
<response list="true">
<user>
  <id>1</id>
  <first_name>Имя</first_name>
  <last_name>Фамилия</last_name>
</user>
<user>
  <id>2</id>
  <first_name>Имя</first_name>
  <last_name>Фамилия</last_name>
</user>
</response>
Код:
var text = project.Variables["xml"].Value;
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();

    doc.LoadXml(text);

    StringBuilder sb = new StringBuilder();
    foreach (System.Xml.XmlNode node in doc.DocumentElement.ChildNodes)
    {

        sb.Append('|');
        sb.AppendLine(node.InnerText);
    }
Пробую парсить так, но InnerText берет не значение внутренних параметров, а выводит всё содержание <user>: |1ИмяФамилия
Мне же надо разбивать 1|Имя|Фамилия.
 

Lite

Client
Регистрация
17.10.2013
Сообщения
283
Благодарностей
89
Баллы
28
Update
Код:
var text = project.Variables["xml"].Value;
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();

    doc.LoadXml(text);

    StringBuilder sb = new StringBuilder();
    foreach (System.Xml.XmlNode node in doc.DocumentElement.ChildNodes)
    {
for (int i=0; i<node.ChildNodes.Count; i++)
      {
        if (node.ChildNodes[i].Name=="uid"||node.ChildNodes[i].Name=="first_name"||node.ChildNodes[i].Name=="last_name"){
        sb.Append(node.ChildNodes[i].InnerText);
        sb.Append('|');}
       
    }sb.AppendLine();
    }

return sb;
Сделал так, работает. (if вставил т.к. полей у меня больше, и не все нужны)
 
  • Спасибо
Реакции: lucen

lucen

Пользователь
Регистрация
18.03.2014
Сообщения
132
Благодарностей
9
Баллы
18
Апну тему, тоже озадачился.
Код:
<response list="true">
<user>
  <id>1</id>
  <first_name>Имя</first_name>
  <last_name>Фамилия</last_name>
</user>
<user>
  <id>2</id>
  <first_name>Имя</first_name>
  <last_name>Фамилия</last_name>
</user>
</response>
Код:
var text = project.Variables["xml"].Value;
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();

    doc.LoadXml(text);

    StringBuilder sb = new StringBuilder();
    foreach (System.Xml.XmlNode node in doc.DocumentElement.ChildNodes)
    {

        sb.Append('|');
        sb.AppendLine(node.InnerText);
    }
Пробую парсить так, но InnerText берет не значение внутренних параметров, а выводит всё содержание <user>: |1ИмяФамилия
Мне же надо разбивать 1|Имя|Фамилия.
да это sb.Append('|') без if не работает
 

Lite

Client
Регистрация
17.10.2013
Сообщения
283
Благодарностей
89
Баллы
28
да это sb.Append('|') без if не работает
Не, разница в том, что во втором случае брал значение текста каждого дочернего элемента. А в первом просто указал взять текст всех дочерних элементов. (ну я так понимаю)
Код:
sb.Append(node.ChildNodes[i].InnerText)
 
Последнее редактирование:

Lite

Client
Регистрация
17.10.2013
Сообщения
283
Благодарностей
89
Баллы
28
Возникла странная проблема - если какое-то поле не встречается в файле - код C# выполняется с ошибкой. Например если я запрашиваю first_name, но где-то этого поля <first_name>Имя</first_name> нет - код не выполнится. Причем если файл вообще пустой - код выполняется.
 

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
901
Баллы
113
А что у вас за код?
 

Lite

Client
Регистрация
17.10.2013
Сообщения
283
Благодарностей
89
Баллы
28
if(node["name"].InnerText=="0")
например. Если беру параметр который встречается обязательно - всё нормально выполняется.

Да и даже если взять строку
sb.AppendLine(node["name"].InnerText) тоже ошибка.
 
Последнее редактирование:

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
  • Спасибо
Реакции: Lite

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113

famous1144

Client
Регистрация
27.03.2014
Сообщения
137
Благодарностей
53
Баллы
28
Xml.Linq - наше все :D
 

Lite

Client
Регистрация
17.10.2013
Сообщения
283
Благодарностей
89
Баллы
28
В прошлый раз забил и как-то в обход сделал, в итоге опять столкнулся. Всё оказалось просто)
Код:
try
        {
            sb.Append(node["name"].InnerText);
        }
catch(Exception e)
        {}
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)