Как анализировать любой XML-файл, не зная имен тегов - PullRequest
0 голосов
/ 23 октября 2018

Таким образом, мой метод принимает xmlfile в качестве параметра (поэтому я не буду знать имена тегов от руки и т. Д.) И добавляю элементы, их значения, а также, если они имеют какие-либо атрибуты, их значения, а также метки. Текст,Я чувствовал, что на этот вопрос уже есть ответ (попытался посмотреть), но большинство примеров переполнения стека относится к разбору определенного XML-файла, который можно выполнить с помощью поиска linq после XDocument.Load () файла.Еще один способ, который я заметил, - это сделать foreach для каждого элемента в doc.descendant следующим образом, но это выглядит как полный беспорядок (и я даже не получаю атрибуты и их значения)

       XDocument doc = XDocument.Load(TextBox1.Text);

        foreach (XElement element in doc.Descendants())
        {
            Label1.Text += element.Name + element.Value + "\n";

        }

Что такоеспособ передать в любой XML-файл, и просто в основном взять имя элемента + их значение, а также имя атрибута + их значение.

РЕДАКТИРОВАТЬ: я чувствую, что я ближе ... вот что я обновил до сих пор

XDocument doc = XDocument.Load("http://localhost:56767/File1.xml");
        int i = 0;
        foreach (XElement element in doc.Descendants())
        {
                var child = element.Elements();
                foreach (XElement node in child)
                {
                    BulletedList1.Items.Add(node.Name.LocalName + ": "+node.Value);
                    if (node.HasAttributes)
                    {
                        foreach (XAttribute attributeNode in node.Attributes())
                        {
                            if (!attributeNode.Name.LocalName.Contains("xm"))
                            {
                                BulletedList1.Items.Add(attributeNode.Name.LocalName + ": " + attributeNode.Value);
                            }

                        }
                    }
                    i++;
                }
        }
        Label1.Text += i;

Единственная проблема, с которой я столкнулся, это то, что потомки сначала несколько порций данных, например, если у меня есть

<Books>
 <Book>
  <Title>title</Title>
  <Author>author</Author>
 <Book>
 <Book>
  <title>title2</Title>
  <Author>author2</Author>
 <Book>
<Books>

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

1 Ответ

0 голосов
/ 23 октября 2018

Вы можете анализировать общий XML-документ в общую структуру данных, используя любой анализатор DOM.

Звучит так, как будто вы хотите что-то более конкретное (менее общее), чем анализатор DOM, но не такконкретные, как то, что вы получаете (скажем) от технологий привязки данных.Если это так, то вам нужно будет объяснить, какие именно ограничения (ограничения из общей общности) вы хотите применить, и какую именно структуру данных вы хотите использовать для представления результата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...