Считать документ XML с диска, а затем представить его как дерево - C#
Формулировка задачи:
Здравствуйте, я новичок. Язык C#
Задача в том, чтобы считать документ doc1.xml с диска, а затем представить его как дерево и это дерево записать в виде массива строк, где каждая строка есть путь от корня дерева до конкретного листа.
То есть, к примеру, документ
должен быть представлен в виде набора из трех строк
a/b/c/Info_C
a/b/e/Info_E
a/d/Info_D
Причем я не уверен, что разделять теги в строке нужно именно "/", можно спецсимвол какой придумать. Но тут пусть профессионалы посоветуют)
Все говорят, что это просто, но я три дня читал про всякие DOM структуры и XmlSerializer, жутко устал, но код в моей голове так и не сложился.
Нет ли вообще готовых решений по этой теме? Друзья, если кому это не трудно, напишите такую функцию, чтобы на вход принимала адрес документа на диске, а возвращала такой вот набор строк, это ведь вам всего 10 минут кодинга, а мне поможет очень) Или ссылку на готовую реализацию дайте.
Заранее благодарен всем откликнувшимся!
Листинг программы
- <?xml version="1.0" encoding="WINDOWS-1251"?>
- <a>
- <b>
- <c>Info_C</c>
- <e>Info_E</e>
- </b>
- <d>Info_D</d>
- </a>
Решение задачи: «Считать документ XML с диска, а затем представить его как дерево»
textual
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Xml.Linq;
- namespace ConsoleApplication72
- {
- class Program
- {
- static void Main(string[] args)
- {
- string s = @"<?xml version=""1.0"" encoding=""WINDOWS-1251""?>
- <a>
- <b>
- <c>Info_C</c>
- <e>Info_E</e>
- </b>
- <d>Info_D</d>
- </a>";
- var doc = XDocument.Load(new StringReader(s));
- foreach (var xPath in GetXPaths(doc.Root))
- {
- Console.WriteLine(xPath);
- }
- Console.ReadKey();
- }
- private static IEnumerable<string> GetXPaths(XElement element)
- {
- string localName = element.Name.LocalName;
- if (!element.HasElements)
- {
- yield return localName + "/" + element.Value;
- }
- else
- {
- foreach (var descendantNode in element.Elements())
- {
- foreach (string xPath in GetXPaths(descendantNode))
- {
- yield return localName + "/" + xPath;
- }
- }
- }
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д