Can';无法使用C#XPath获取属性值

Can';无法使用C#XPath获取属性值,c#,xml,xpath,C#,Xml,Xpath,我已经花了太多时间在这上面了,仍然无法获得NTE属性的值。有人能帮忙吗 C# XML <?xml version="1.0"?> <DATA2SC PIN="00000"> <CALL TR_NUM="00000001" STATUS="WAITING_FOR_APPROVAL" NTE="$15.00"> <PROBLEM> Text </PROBLEM

我已经花了太多时间在这上面了,仍然无法获得NTE属性的值。有人能帮忙吗

C#

XML

<?xml version="1.0"?>
<DATA2SC PIN="00000">
    <CALL
    TR_NUM="00000001"
    STATUS="WAITING_FOR_APPROVAL"
    NTE="$15.00">
        <PROBLEM>
            Text
        </PROBLEM>
    </CALL>
</DATA2SC>

正文

Select方法返回具有指定XPath的所有节点的集合

可以使用,选择第一个节点

    var node = xmlNav.SelectSingleNode("/DATA2SC/CALL");
    string dne = node.GetAttribute("NTE", "");

你能试试这个密码吗

我已经查过了,这是工作

    StreamReader sr = new StreamReader("c:\\x.xml");
    XPathDocument xmlDoc = new XPathDocument(sr); // holds xml document
    XPathNavigator xmlNav = xmlDoc.CreateNavigator(); //evaluates XPath expressions


    var node = xmlNav.SelectSingleNode("/DATA2SC/CALL");
    string dne = node.GetAttribute("NTE", "");

    Console.WriteLine(dne);

或者你也可以这样做:

    XDocument docXmlWorld = XDocument.Load("c:\\x.xml");
    //Get the first child => [DATA2SC]
    XElement elementNodeDATA2SC = docXmlWorld.Element("DATA2SC");
    //Get the first child => [CALL]
    XElement elementNodeCALL = elementNodeDATA2SC.Element("CALL");
    //Get the attribute NTE from [CALL] node 
    string dne = elementNodeCALL.Attribute("NTE").Value;
    Console.Out.WriteLine(dne);

我以前也尝试过使用SelectSingleNode,但不幸的是它不起作用。@GvS=>如果您犯了一个错误,它应该是=>string dne=node.GetAttribute(“NTE”,即“”)@MehdiBugnard,是的,你是对的,那是一只藏在普通视线中的虫子。谢谢你。看来我的问题出在别的地方了。我将xml内容下载到流阅读器中。这就是我的问题所在:(
    XDocument docXmlWorld = XDocument.Load("c:\\x.xml");
    foreach (var node1 in docXmlWorld.Descendants("DATA2SC"))
    {
        foreach (var node2 in node1.Descendants("CALL"))
        {
            string dne = node2.Attribute("NTE").Value;
            Console.Out.WriteLine(dne);
        }
    }
    XDocument docXmlWorld = XDocument.Load("c:\\x.xml");
    //Get the first child => [DATA2SC]
    XElement elementNodeDATA2SC = docXmlWorld.Element("DATA2SC");
    //Get the first child => [CALL]
    XElement elementNodeCALL = elementNodeDATA2SC.Element("CALL");
    //Get the attribute NTE from [CALL] node 
    string dne = elementNodeCALL.Attribute("NTE").Value;
    Console.Out.WriteLine(dne);