Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
10 / 10 / 0
Регистрация: 17.01.2013
Сообщений: 432
1

Работа с xml деревьями

12.03.2013, 19:37. Просмотров 1670. Ответов 8
Метки нет (Все метки)

есть строка в виде xml, интересует как взять из дерева объектов родителя и всех его потомков, в виде дерева и превратить в строку, т.е. имеем строку
XML
1
2
3
4
5
6
7
8
9
10
<root>
 <родитель1>
  <дитё1>
  </дитё1>
 </родитель1>
 <родитель2>
  <дитё2>
  </дитё2>
 </родитель2>
</root>
нужно получить
XML
1
2
3
4
<родитель2>
  <дитё2>
  </дитё2>
</родитель2>
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.03.2013, 19:37
Ответы с готовыми решениями:

Работа с деревьями
Здравствуйте, помогите пожалуйста. 1. Описать функцию которая: a) печатает узлы непустого дерева...

Работа с деревьями и строками: Нужно реализовать метод поиска
Добрый день,есть такой вопрос: Есть класс Treenode со структурой class TreeNode { ...

Работа с деревьями
Здравствуйте! Можете подсказать класс, с помощью которого можно работать с деревьями?

Работа с XML
Здравствуйте, у меня есть XML файл. Мне нужно возращать из него некие числа или буквы. Число...

8
59 / 59 / 17
Регистрация: 09.06.2009
Сообщений: 117
12.03.2013, 20:19 2
С помощью XmlTextReader можете прочитать все содержимое определенного узла.
1
10 / 10 / 0
Регистрация: 17.01.2013
Сообщений: 432
12.03.2013, 20:24  [ТС] 3
а можно пример?
0
25 / 25 / 1
Регистрация: 01.05.2011
Сообщений: 143
12.03.2013, 20:52 4
вот из моей прошлой лабки, разберетесь?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    public IEnumerable<Client> GetClients([Control("txtFilter")]string company)//attribute [Control("txtFilter")] shows that parametr company works with the txtFilter 
    {
        var doc = XDocument.Load(Server.MapPath("~/commercial.xml")); //get the data from xml
        var query = doc.Root.Elements();//get the list of all elements
        if (!string.IsNullOrEmpty(company))//check if entry is  empty
        {
            //if not empty, linq to xml
            query = query.Where(el => el.Element("CompanyName").Value.StartsWith(company));
        }
        //get the list of clients
        var clients = query.Select(el => new Client()
                {
                    ClientNo = el.Element("ClientNo").Value,
                    CompanyName = el.Element("CompanyName").Value,
                    Address = el.Descendants("Address").FirstOrDefault().Value,
                    Town = el.Descendants("Town").FirstOrDefault().Value,
                    Country = el.Descendants("Country").FirstOrDefault().Value,
                    PostCode = el.Descendants("PostCode").FirstOrDefault().Value,
                    TelephoneNo = el.Element("TelephoneNo").Value
                });
        return clients;
    }
дерево у меня было такое

XML
1
2
3
4
5
6
7
8
9
<CommercialClients>
  <AClient>
    <ClientNo>1813</ClientNo><CompanyName>K Plastics</CompanyName><FullAddress>
      <Address>Cleveragh Industrial Estate </Address>
      <Town>SLIGO</Town>
      <Country>IRELAND</Country>
      <PostCode>00353 7166</PostCode>
    </FullAddress><TelephoneNo/>
  </AClient><AClient>
0
10 / 10 / 0
Регистрация: 17.01.2013
Сообщений: 432
14.03.2013, 13:03  [ТС] 5
Вы меня не поняли, мне не нужны значения узлов, я их не знаю, и они могут быть разные, мне нужно из дерева на определённом уровне выбрать узел, затем передать дерево в котором выбранный мной узел будет корнем, к примеру вот такое дерево
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<coord>
  <_1idkomn>
    <_2kolkom>
      <_1komand>
        <_0koord>
          <x>1</x>
          <y>2</y>
          <z>3</z>
        </_0koord>
        <_1>
          <_1>_2_3</_1>
        </_1>
      </_1komand>
      <_2komand>
        <_0>
          <_1>yz</_1>
        </_0>
        <_1>
          <_1>_2_3</_1>
        </_1>
      </_2komand>
    </_2kolkom>
    <_3kolkom>
      <_1komand3>
        <_0>
          <_1>yz</_1>
        </_0>
        <_1>
          <_1>_2_3</_1>
        </_1>
      </_1komand3>
      <_2komand3>
        <_0>
          <_1>yz</_1>
        </_0>
        <_1>
          <_1>_2_3</_1>
        </_1>
      </_2komand3>
      <_3komand3>
        <_0>
          <_1>yz</_1>
        </_0>
        <_1>
          <_1>_2_3</_1>
        </_1>
      </_3komand3>
    </_3kolkom>
  </_1idkomn>
  <_2>
    <_2>
      <_1>
        <_0>
          <_1>yz</_1>
        </_0>
        <_1>
          <_1>_2_3</_1>
        </_1>
      </_1>
      <_2>
        <_0>
          <_1>yz</_1>
        </_0>
        <_1>
          <_1>_2_3</_1>
        </_1>
      </_2>
    </_2>
    <_3>
      <_1>
        <_0>
          <_1>yz</_1>
        </_0>
        <_1>
          <_1>_2_3</_1>
        </_1>
      </_1>
      <_2>
        <_0>
          <_1>yz</_1>
        </_0>
        <_1>
          <_1>_2_3</_1>
        </_1>
      </_2>
      <_3>
        <_0>
          <_1>yz</_1>
        </_0>
        <_1>
          <_1>_2_3</_1>
        </_1>
      </_3>
    </_3>
  </_2>
</coord>
а нужно получить
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<_1idkomn>
    <_2kolkom>
      <_1komand>
        <_0koord>
          <x>1</x>
          <y>2</y>
          <z>3</z>
        </_0koord>
        <_1>
          <_1>_2_3</_1>
        </_1>
      </_1komand>
      <_2komand>
        <_0>
          <_1>yz</_1>
        </_0>
        <_1>
          <_1>_2_3</_1>
        </_1>
      </_2komand>
    </_2kolkom>
    <_3kolkom>
      <_1komand3>
        <_0>
          <_1>yz</_1>
        </_0>
        <_1>
          <_1>_2_3</_1>
        </_1>
      </_1komand3>
      <_2komand3>
        <_0>
          <_1>yz</_1>
        </_0>
        <_1>
          <_1>_2_3</_1>
        </_1>
      </_2komand3>
      <_3komand3>
        <_0>
          <_1>yz</_1>
        </_0>
        <_1>
          <_1>_2_3</_1>
        </_1>
      </_3komand3>
    </_3kolkom>
  </_1idkomn>
в первом дереве coord - корень, во втором _1idkomn,
если использовать XmlTextReader, как мне узнать номер узла? как мне получить дерево?? оно же всё читает последовательно
0
52 / 50 / 10
Регистрация: 28.09.2012
Сообщений: 97
15.03.2013, 00:10 6
C#
1
IEnumerable<XElement> myNewElement = myElement.Descendants("_1idkomn");
0
10 / 10 / 0
Регистрация: 17.01.2013
Сообщений: 432
15.03.2013, 01:31  [ТС] 7
Цитата Сообщение от Makc71 Посмотреть сообщение
C#
1
IEnumerable<XElement> myNewElement = myElement.Descendants("_1idkomn");
простите за некомпетентность, но можно немножко подробнее?
0
52 / 50 / 10
Регистрация: 28.09.2012
Сообщений: 97
15.03.2013, 09:07 8
kelod, например
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
 
namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            string str = @"<coord>
  <_1idkomn>
    <_2kolkom>
      <_1komand>
        <_0koord>
          <x>1</x>
          <y>2</y>
          <z>3</z>
        </_0koord>
        <_1>
          <_1>_2_3</_1>
        </_1>
      </_1komand>
      <_2komand>
        <_0>
          <_1>yz</_1>
        </_0>
        <_1>
          <_1>_2_3</_1>
        </_1>
      </_2komand>
    </_2kolkom>
    <_3kolkom>
      <_1komand3>
        <_0>
          <_1>yz</_1>
        </_0>
        <_1>
          <_1>_2_3</_1>
        </_1>
      </_1komand3>
      <_2komand3>
        <_0>
          <_1>yz</_1>
        </_0>
        <_1>
          <_1>_2_3</_1>
        </_1>
      </_2komand3>
      <_3komand3>
        <_0>
          <_1>yz</_1>
        </_0>
        <_1>
          <_1>_2_3</_1>
        </_1>
      </_3komand3>
    </_3kolkom>
  </_1idkomn>
  <_2>
    <_2>
      <_1>
        <_0>
          <_1>yz</_1>
        </_0>
        <_1>
          <_1>_2_3</_1>
        </_1>
      </_1>
      <_2>
        <_0>
          <_1>yz</_1>
        </_0>
        <_1>
          <_1>_2_3</_1>
        </_1>
      </_2>
    </_2>
    <_3>
      <_1>
        <_0>
          <_1>yz</_1>
        </_0>
        <_1>
          <_1>_2_3</_1>
        </_1>
      </_1>
      <_2>
        <_0>
          <_1>yz</_1>
        </_0>
        <_1>
          <_1>_2_3</_1>
        </_1>
      </_2>
      <_3>
        <_0>
          <_1>yz</_1>
        </_0>
        <_1>
          <_1>_2_3</_1>
        </_1>
      </_3>
    </_3>
  </_2>
</coord>";
            XElement myElement = XElement.Parse(str);
            IEnumerable<XElement> myNewElement = myElement.Descendants("_1idkomn");
            foreach (XElement xe in myNewElement)
                Console.WriteLine(xe);
            Console.WriteLine(myNewElement.Count());
        }
    }
}
0
83 / 83 / 14
Регистрация: 15.02.2011
Сообщений: 252
16.03.2013, 22:47 9
Так не пойдет ? InnerXML
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.03.2013, 22:47

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Работа с XML
1) Как получить содержимое тега? например есть такая конструкция: &lt;day type=&quot;A&quot;&gt; ...

Работа с xml.
Приветствую всех) У меня есть xml файл. Мне нужно из него вытащить значение и присвоить его...

работа с XML
почему то при попытке сохранения фаила, сам фаил вроде норм сохраняется, но выводится ссобщение...

Работа с xml
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt; &lt;data&gt; &lt;Операторы&gt; &lt;function name...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.