Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
4 / 4 / 2
Регистрация: 14.02.2015
Сообщений: 122
1

Как прочитать XML документ с тэгами и атрибутами подобного рода

30.09.2016, 13:55. Показов 1833. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!
Имеется документ 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
25
26
27
28
29
30
31
32
<?xml version="1.0" encoding="utf-8" ?>
<blocks>
    <block number"123">
        <pages>
        
            <page number="1" format="2">
                <area>
                    <area>1769</area>
                    <unit>055</unit>
                </area>
                <category>003002000000</category>
            </page>
            
            <page number="2" format="3">
                <area>
                    <area>1222</area>
                    <unit>053</unit>
                </area>
                <category>003002000000</category>
            </page>
            
            <page number="3" format="4">
                <area>
                    <area>1231</area>
                    <unit>054</unit>
                </area>
                <category>003002000000</category>
            </page>
            
        </pages>
    <block>
</blocks>


Как спарсить все значения и между тэгами, и то, что в атрибутах?

Удается пока только спарсить то, что между тэгами из-за большой вложенности тэгов

Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
        void LoadXML()
        {
            XmlDocument xDoc = new XmlDocument();
            xDoc.Load("doc.xml");
            XmlElement xRoot = xDoc.DocumentElement;
            XmlNodeList childnodes = xRoot.SelectNodes("blocks");
 
            foreach (XmlNode xnode in xRoot)
            {
                foreach (XmlNode childnode in xnode.ChildNodes)
                {
                    if (childnode.Name == "block")
                    {
                        richTextBox1.Text += childnode.InnerText;
                    }
                }
            }
        }


На выходе необходимо, чтобы было что-то вроде:
Кликните здесь для просмотра всего текста
123
1 2 1769 055 00300200000
2 3 1222 053 00300200000
3 4 1231 054 00300200000
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.09.2016, 13:55
Ответы с готовыми решениями:

Прочитать XML элемент в котором есть элементы с атрибутами игнорируя остальных
XML Прочитать элемент в котором есть элементы с атрибутами игнорируя остальных вот XML &lt;?xml...

Форумчане выручайте. Как решать подобного рода задания (4 шт)
Я болел, а завтра контрольная работа по этой теме. Несколько заданий понял, щас сидел учил, а с...

Подскажите, как делаются подобного рода переходы в css? (внутри скриншот)
мне интересно, как делаются такие очертания менюшек или любого другого блока. на скриншотах указал...

Не получается прочитать документ XML
Есть документ. Пытаюсь его прочитать &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;?xml-stylesheet...

3
Эксперт .NET
10566 / 6490 / 1506
Регистрация: 25.05.2015
Сообщений: 19,662
Записей в блоге: 14
30.09.2016, 14:23 2
Лучший ответ Сообщение было отмечено Chewbacca1 как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
string xml = Resources.file;
 
XDocument doc = XDocument.Parse(xml); 
 
foreach (var block in doc.Root.Elements("block"))
{
    Debug.WriteLine((string)block.Attribute("number"));
 
    foreach (var page in block.Descendants("page"))
    {
        Debug.WriteLine(
            "{0} {1} {2} {3} {4} {5}",
            (string)page.Attribute("number"),
            (string)page.Attribute("number"),
            (string)page.Attribute("format"),
            (string)page.Element("area").Element("area"),
            (string)page.Element("area").Element("unit"),
            (string)page.Element("category"));
    }
}
1
4 / 4 / 2
Регистрация: 14.02.2015
Сообщений: 122
30.09.2016, 15:15  [ТС] 3
Rius, еще вопрос если можно:
если у меня в начале идет объявление неймспейсов то как быть?
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
<?xml version="1.0" encoding="utf-8" ?>
<KPT xmlns:ns2="urn://x-artefacts-rosreestr-ru/commons/complex-types/address-output/3.0.1"
xmlns:ns3="urn://x-artefacts-rosreestr-ru/commons/complex-types/entity-spatial/2.0.1"
xmlns:ns4="urn://x-artefacts-rosreestr-ru/commons/complex-types/parameters-oks/2.0.1"
xmlns:ns5="urn://x-artefacts-rosreestr-ru/commons/complex-types/document-output/3.0.1"
xmlns:ns6="urn://x-artefacts-rosreestr-ru/commons/complex-types/certification-doc/1.0"
xmlns:ns7="urn://x-artefacts-smev-gov-ru/supplementary/commons/1.0.1"
xmlns="urn://x-artefacts-rosreestr-ru/outgoing/kpt/9.0.3">
<blocks>
    <block number"123">
        <pages>
        
            <page number="1" format="2">
                <area>
                    <area>1769</area>
                    <unit>055</unit>
                </area>
                <category>003002000000</category>
            </page>
            
            <page number="2" format="3">
                <area>
                    <area>1222</area>
                    <unit>053</unit>
                </area>
                <category>003002000000</category>
            </page>
            
            <page number="3" format="4">
                <area>
                    <area>1231</area>
                    <unit>054</unit>
                </area>
                <category>003002000000</category>
            </page>
            
        </pages>
    <block>
</blocks>
</KPT>
Добавился тэг KPT
0
Эксперт .NET
10566 / 6490 / 1506
Регистрация: 25.05.2015
Сообщений: 19,662
Записей в блоге: 14
30.09.2016, 15:55 4
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
string xml = Resources.file;
 
XDocument doc = XDocument.Parse(xml);
XNamespace ns = "urn://x-artefacts-rosreestr-ru/outgoing/kpt/9.0.3";
 
foreach (var block in doc.Root.Descendants(ns + "block"))
{
    Debug.WriteLine((string)block.Attribute("number"));
 
    foreach (var page in block.Descendants(ns + "page"))
    {
        Debug.WriteLine(
            "{0} {1} {2} {3} {4} {5}",
            (string)page.Attribute("number"),
            (string)page.Attribute("number"),
            (string)page.Attribute("format"),
            (string)page.Element(ns + "area").Element(ns + "area"),
            (string)page.Element(ns + "area").Element(ns + "unit"),
            (string)page.Element(ns + "category"));
    }
}
2
30.09.2016, 15:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.09.2016, 15:55
Помогаю со студенческими работами здесь

Прочитать данные из XML в один документ
Всем привет. Буду рад помощи. Имею XML документ в котором нужно считать нужные позиции и...

написать макрос задали.но встречаю подобного рода впервые
На Листе2 электронной таблицы набрать данные (рис.). Написать макрос, который вводит количество...

Где в winapi программе вставить текст подобного рода
извините за невежество. GetCurrentDirectoryA(sizeof(patchFile),patchFile);...

Как вырезать текст между двумя тэгами в xml?
День добрый! Ребят помогите пож. добиться удаления текста между тэгами &lt;description&gt;техт бла...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru