读取XmlAttribute值

时间:2018-06-27 13:27:12

标签: c# xml

我有一个看起来像这样的xml:

<OrderID xmlns="http://XMLPolling/JDEOrderQueue">
    <PHWork.dbo.JDE_Order_Queue xmlns="" orderno="101" ID="1"/>
</OrderID>

我正在尝试读取orderno的属性值。但是,我的代码不起作用。

XElement e = XElement.Load(new XmlNodeReader(xDoc));
Console.WriteLine(e.XPathSelectElement("orderno").Attribute("ID"));

3 个答案:

答案 0 :(得分:1)

我认为您正在尝试查询错误的元素。试试:

XElement e = XElement.Load(new XmlNodeReader(xDoc));
Console.WriteLine(e.XPathSelectElement("PHWork.dbo.JDE_Order_Queue").Attribute("ordeno"));

答案 1 :(得分:0)

我相信问题出在您的xpath语句中。我认为应该是这样的:

e.XPathSelectElement("PHWork.dbo.JDE_Order_Queue[@orderno]") 

或者也许

e.XPathSelectElement("PHWork.dbo.JDE_Order_Queue") 

答案 2 :(得分:0)

这是正确的实现:

XNamespace ns = XNamespace.Get("http://XMLPolling/JDEOrderQueue");
XDocument doc = XDocument.Load("xml.xml");
XElement orderID = doc.Elements(ns + "OrderID").FirstOrDefault();
if(orderID != null)
{
    XElement phWork = orderID.Elements("PHWork.dbo.JDE_Order_Queue").FirstOrDefault();
    if(phWork != null)
    {
        string oderno = phWork.Attribute("orderno")?.Value;
    }
}