Can';无法使用C#XPath获取属性值
我已经花了太多时间在这上面了,仍然无法获得NTE属性的值。有人能帮忙吗 C# XMLCan';无法使用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
<?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);