0 / 0 / 0
Регистрация: 24.08.2014
Сообщений: 7
1

Получение списка дочерних узлов из XML

24.08.2014, 20:04. Показов 4772. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите с реализацией, застрял...
Есть XML-файл подобного вида:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="utf-8"?>
<words>
  <word val="aaa">
    <translate>bbb</translate>
  </word>
  <word val="sss">
    <translate>ddd</translate>
  </word>
  <word val="fff">
    <translate>111</translate>
    <translate>222</translate>
    <translate>333</translate>
    <translate>444</translate>
 </word>
</words>
Не могу получить список дочерних элементов <translate> для дальнейшего поиска нужного значения.
Есть идеи?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.08.2014, 20:04
Ответы с готовыми решениями:

Получение количества дочерних узлов в TreeView
Здравствуйте, подскажите имею дерево вида: -Родительский узел -дочерний -поддочерний...

LINQ 2 XML Получение атрибутов дочерних элементов
имеется XML файл вида &lt;Root&gt; &lt;Elements Name=&quot;NAME&quot;&gt; &lt;Element Atr1=&quot;atr1&quot;...

Получение узлов верхнего уровня из XML
здравствуйте. у меня вот такой xml &lt;Part&gt; &lt;Object Name=&quot;A&quot; ID=&quot;1&quot;&gt; &lt;Object...

Получение значений дочерних тегов XML
Использую я модуль XML::DOM. Файл XML выгладит след. образом: &lt;?xml version='1.0'...

8
3 / 3 / 0
Регистрация: 22.01.2014
Сообщений: 38
25.08.2014, 01:19 2
то есть, у вас не получается извлечь элемент, который содержит открывающий и закрывающий тег в 1 строке?

Добавлено через 8 минут
или извлечь подэлементы подэлемента?
0
0 / 0 / 0
Регистрация: 24.08.2014
Сообщений: 7
25.08.2014, 01:36  [ТС] 3
Мне нужно получить список дочерних элементов определенного элемента. Например, список значений из последнего <word> должен получиться - "111", "222", "333", "444". Или в другом виде.
Задача стоит следующая:
Нужно проверить, есть ли данный перевод у данного слова уже в базе.

Добавлено через 2 минуты
Список дочерних элементов корневого элемента я получать умею, но как пройти дальше...
0
3 / 3 / 0
Регистрация: 22.01.2014
Сообщений: 38
25.08.2014, 01:57 4
а что, если вот так:
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
class XMLNodeExtractor {
 TextCursor cursor; // currentChar; currentLine
 XMLNode prevNode;
 XMLNode resultNode;
 
 public XMLNodeExtractor(XMLNodeExtractor prev) {
    prevNode = prev.resultNode;
    resultNode = new XMLNode();
 }
 
 
 public XMLNode Extract() {
    ExtractSimpleValues();
    ExtractSubnodes();  
 }
 
 void ExtractSubnodes() {
    while(!OnEndOfText()) {
    if(OnCloseTag()) break;
        if(OnOpenTag())
            ExtractSubnode();
        MoveNext();
    }
 }
 
 
 void ExtractSubnode() {
    resultNode.Add( new XMLNodeExtractor(this).Extract() );
 }
 
 void MoveNext() {
    if(OnEndOfLine())
        ToNextLine();
    else
        ToNextChar();
 }
 
}
1
0 / 0 / 0
Регистрация: 24.08.2014
Сообщений: 7
25.08.2014, 02:30  [ТС] 5
Спасибо, но победил ситуацию подобным образом:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
static public Boolean SearchTranslate (int i, string translate)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load(path);
            XmlNodeList list = doc.GetElementsByTagName("word");
            XmlElement El = (XmlElement)list[i].FirstChild;
            while (El!=null)
            {
                if(El.InnerText == translate)
                {
                    return true;
                }
                El = (XmlElement)El.NextSibling;
            }
            return false;
        }
0
3 / 3 / 0
Регистрация: 22.01.2014
Сообщений: 38
25.08.2014, 02:37 6
а что этот код означает?
0
0 / 0 / 0
Регистрация: 24.08.2014
Сообщений: 7
25.08.2014, 02:43  [ТС] 7
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
static public Boolean SearchTranslate (int i, string translate)
        {
            //создаём документ и загружаем в него наш файл
            XmlDocument doc = new XmlDocument();
            doc.Load(path);
            //создаём список элементов <word>
            XmlNodeList list = doc.GetElementsByTagName("word");
            //переходим к первому потомку нужного нам элемента
            XmlElement El = (XmlElement)list[i].FirstChild;
            while (El!=null)
            {
                //если значение этого потомка ровняется нужному нам значению - возвращаем true
                if(El.InnerText == translate)
                {
                    return true;
                }
                //переходим к следующему потомку
                El = (XmlElement)El.NextSibling;
            }
            return false;
        }
0
3 / 3 / 0
Регистрация: 22.01.2014
Сообщений: 38
25.08.2014, 02:52 8
а для чего этот метод используется?
0
0 / 0 / 0
Регистрация: 24.08.2014
Сообщений: 7
25.08.2014, 02:54  [ТС] 9
С помощью него я смотрю есть ли в моём XML перевод слова, который я пытаюсь добавить.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.08.2014, 02:54
Помогаю со студенческими работами здесь

Древовидные структуры: определить число узлов, число дочерних узлов которых равно двум
Добрый день. Не могли бы Вы, ребят, помочь с задачей по древовидным структурам: необходимо...

Проверить существование под-узлов у узлов корневого элемента Xml файла
Есть следующий код для получения имен всех под-узлов корневого элемента Xml файла: List&lt;string&gt;...

TreeView, заполнение дочерних узлов из БД
Подтолкните на мысль...Есть таблица на ms sql (ID, PARENT_ID, NAME).Никак не получается добавить...

Удаление дочерних узлов (DOM)
Привет! Такой вопрос. Есть элемент elem1, у которого имеются дочерние узлы. Если я с помощью...

Создание дочерних узлов в treeList из Dictionary
Здравствуйте. Есть словарь подразделений Dictionary&lt;string, RootObject1&gt; array1 = new...

Добавление родительских и дочерних узлов treeview
Всем привет! нашел статью где описано добавление данных в treeview но оно мне не очень подходит...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru