С Новым годом! Форум программистов, компьютерный форум, киберфорум
LINQ
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
41 / 33 / 24
Регистрация: 09.06.2012
Сообщений: 144

Определить количество parent элементов в отдельном xml файле

09.06.2012, 23:38. Показов 1247. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Прошу помощи с Linq to xml. Я никак не могу сообразить каким образом определить кол-во parent элементов в отдельном файле, т.к. без этого часто происходят ошибки.
Структуры типичных xml с которыми имею дело:

Вариант1
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<main>
   <submain>
      <main name="Name1">
         <subsbumain>
            <subsub name="1">
            <subsub name="2">
            ...............
         </subsbumain>
         <mainparam param1="1" param2="1"...>
      </main>
...............
   </submain>
   <mparams>
</main>
Вариант2
XML
1
2
3
4
5
6
7
8
<main>
     <subsbumain>
         <subsub name="1">         
         <subsub name="2">
         ...............
      </subsbumain>
   <mparams>
</main>
Вариант3
XML
1
2
3
<main>
   </subsbumain>
</main>
В последнем случае получается что-то вроде болванки, пустая таблица.
Я никак не пойму как определить уровень вложенности, чтоб различать эти три варианта.
Вот что есть:

C#
1
2
3
4
5
6
7
if(doc.Root.Element("subsbumain") == null)
{
   //что-то делаю
}else
{
   //сново что-то делаю
}
В этом случае получается определить имя следующего элемента, что дает возможность различить первый и второй варианты, но третий случай вводит в ступор, ведь обращение к "subsub" приводит к ошибке.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.06.2012, 23:38
Ответы с готовыми решениями:

Определить количество элементов в файле
Создать файл F, элементы которого вещественного типа. Из элементов файла F меньших среднего арифметического положительных элементов больших...

как определить количество элементов в текстовом файле
помоги пож! как определить количество элементов в текстовом файлею вот допустим есть файл: 1 2 3 4 5 6 7 8 в нем...

Значение атрибута и его количество в XML-файле
Доброго времени суток! Есть xml-документ &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;root&gt; &lt;hotel hname=&quot;Attica&quot;...

1
41 / 33 / 24
Регистрация: 09.06.2012
Сообщений: 144
12.06.2012, 03:03  [ТС]
Жаль, что помощи я не дождался. Но проблему решил следующим образом:
С начало открываю файл для чтения, веду поиск ключевых parent элементов, потом в зависимости от того какие из них были найдены сужу о типе открываемого файла, из тех трех вариантов:
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
if(System.IO.File.Exists(dir[i]))
                {
                    bool F1 = false;    //  Индикаторы
                    bool F2 = false;    //      Поиска
                    bool F3 = false;
                    bool F4 = false;
                    bool F5 = false;
                    int s;
                    System.IO.StreamReader File = new System.IO.StreamReader(dir[i]);
                    while(!File.EndOfStream)
                    {
                        errors++;
                        num = File.ReadLine();
                        s = num.Length;
                        if(F1 == false) if(fndtxt(num, "main") == true) F1=true;
                        if(F2 == false) if(fndtxt(num, "submain") == true) F2 = true;
                        if(F3 == false) if(fndtxt(num, "main n") == true) F3 = true;
                        if(F4 == false) if(fndtxt(num, "subsbumain") == true) F4 = true;
                        if(F5 == false) if(fndtxt(num, "subsub") == true) F5 = true;
                        if(((F1 == true) && (F2 == true) && (F3 == true) && (F4 == true) && (F5 == true)) || ((F1 == true) && (F4 == true) && (F5 == true))) break;
                    }
 
                        
                    File.Close();
                }
fndtxt(string s1, string s2) - это самопальная функция поиска места вхождения строки s2 в строке s1, если место вхождения найдено, то возвращается true, иначе false:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public bool fndtxt(string slovo, string search) //Исправно - сравнение строк
        {
            int lenofsearch = search.Length - 1;
            int lenofslovo = slovo.Length - 1;
            if(lenofsearch > lenofslovo) return false; //если строка в которой ведется поиск меньше, то нет смысла искать
            int j;
            for(int i = 0; i < slovo.Length - lenofsearch; i++)
            {
                for(j = 0; j <= lenofsearch; j++)
                {
                    if(slovo[i + j] == search[j]) { if(j == lenofsearch) { return true; } }
                    else{break;}
 
                }
            }
            return false;
        }
Вообщем проблема решена.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.06.2012, 03:03
Помогаю со студенческими работами здесь

Подсчитать количество определённых тегов в XML-файле
Имеется функция возвращающая XML документ XmlDocument xd = new XmlDocument(); xd.LoadXml(функция...

Встроенные стили элементов или стили в отдельном файле
Здравствуйте. Вопрос чисто из интереса, хотелось бы знать, как лучше с теоретической точки зрения. У CSS и HTML есть общие свойства(к...

Как проверить количество строк в xml файле на C# в Unity?
Здравствуйте , как можно узнать сколько строк в xml файле ?

Как посчитать количество одинаковых тегов в XML файле?
Добрый всем вечер. Помогите советом. Как посчитать количество тегов stop в теге times, при том, что тегов times будет сотня и тегов stop...

Подсчёт дочерних элементов в XML файле
Здравствуйте, у меня имеется XML файл в котором мне нужно посчитать колличество дочерних элементов(item) у родительского элемента...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru