【问题标题】:Parsing xml doc with XDocument使用 XDocument 解析 xml 文档
【发布时间】:2019-04-22 01:39:09
【问题描述】:

我正在尝试使用 XDocument 解析此 xml 文档,但不了解如何从 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);
                        }
                    }
                }

但它没有给我想要的。任何人都可以指出如何获取我需要的数据?

谢谢。

【问题讨论】:

    标签: c# linq-to-xml


    【解决方案1】:

    您的 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

    【讨论】:

    • 行得通,谢谢。我还需要添加 xElement.Element("comment").Value.ToString() 来获取评论。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多