Разбор XML-документа с помощью XDocument - PullRequest
0 голосов
/ 22 апреля 2019

Я пытаюсь проанализировать этот XML-документ с помощью XDocument, но не понимаю, как извлечь данные из внутренних болтов XDocument.

узлы выглядят так:

<data name="GetOrdersMailMsg" xml:space="preserve">
<value>
        SELECT Orders.buyersEmail,
            Orders.emailMessage
            FROM Orders
            WHERE Orders.orderId = '{0}'
    </value>
<comment>Get email message(s) to buyer</comment>
</data>
<data name="UpdateOrdersMailMsg" xml:space="preserve">
<value>
        UPDATE Orders
            SET    Orders.buyersEmail = '{0}',
                    Orders.emailMessage = '{1}'
            WHERE Orders.orderId = '{2}'
    </value>
<comment>Update mail message to buyer</comment>
</data>

Мне нужны «значение», «комментарий» и «имя данных» для каждого узла.Я пытаюсь код ниже:

                xdoc = XDocument.Load(xmlFile);

                //Get all nodes
                List<XNode> xNodes = xdoc.DescendantNodes().ToList();
                foreach (XNode node in xNodes)
                {
                    XElement element = node as XElement;

                    if (null != element)
                    {
                        //For each orderProperty, get all attributes
                        foreach (XAttribute attribute in element.Attributes())
                        {
                            string name = attribute.Name.ToString();
                            string value = attribute.Value.ToString();

                            Debug.WriteLine("name:" + name);
                            Debug.WriteLine("value:" + value);
                        }
                    }
                }

, но он не дает то, что я хочу.Кто-нибудь может указать мне, как получить необходимые мне данные?

спасибо.

1 Ответ

0 голосов
/ 22 апреля 2019

В вашем XML отсутствует корень и, следовательно, на самом деле нет XML.Но я предполагаю, что вы просто не опубликовали его.

Вы можете использовать Elements() в корневом элементе для поиска всех элементов с именем data.Из них вы можете получить атрибут name с Attribute() и элемент value с Element().

foreach (XElement xElement in xDocument.Root.Elements("data"))
{
    Debug.WriteLine("name:" + xElement.Attribute("name").Value.ToString());
    Debug.WriteLine("value:" + xElement.Element("value").Value.ToString());
}

.NET Fiddle

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