我有一个看起来像这样的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"));
答案 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;
}
}