C# 在asp.net中访问xml节点值时出现问题

C# 在asp.net中访问xml节点值时出现问题,c#,asp.net,xml,xmldocument,C#,Asp.net,Xml,Xmldocument,我已经编写了以下asp.net代码,如何从颜色节点访问minvalue的值和从图表节点访问bgcolor的值 XmlDocument doc = new XmlDocument(); string xmlFile = System.Web.HttpContext.Current.Server.MapPath("Data/Example.xml"); doc.Load(xmlFile); XmlNodeList xmlnode = doc.GetElementsByTagName("value")

我已经编写了以下asp.net代码,如何从颜色节点访问minvalue的值和从图表节点访问bgcolor的值

XmlDocument doc = new XmlDocument();
string xmlFile = System.Web.HttpContext.Current.Server.MapPath("Data/Example.xml");
doc.Load(xmlFile);
XmlNodeList xmlnode = doc.GetElementsByTagName("value");
我的XML如下所示:

<Chart editMode='1' bgColor='FFFFFF' bgAlpha='0' showBorder='0' upperLimit='1000' >
   <colorRange> 
      <color minValue='0' maxValue='100' code='F6BD0F' />
   </colorRange>
   <value>665</value>
</Chart>
var minValue=doc.Root.Element("colorRange").Element("color").Attribute("minValue").Value;

var bgColor = doc.Root.Attribute("bgColor").Value;

665

您可以到这里粘贴您的XML片段:

然后,您将认识到可以使用如下XPATH选择值,例如:

//Chart/Value

您可以转到此处粘贴XML片段:

然后,您将认识到可以使用如下XPATH选择值,例如:

//Chart/Value
试试这个

        XmlNode chartNode = doc.GetElementsByTagName("Chart")[0];
        XmlNode colorNode = doc.GetElementsByTagName("Chart")[0].ChildNodes[0].ChildNodes[0];

        string minvalue = colorNode.Attributes["minValue"].Value;
        string bgColor = chartNode.Attributes["bgColor"].Value;
编辑:这段代码现在应该可以工作了,但是使用发布的XPath建议之一可能会更容易些

        XmlNode chartNode = doc.GetElementsByTagName("Chart")[0];
        XmlNode colorNode = doc.GetElementsByTagName("Chart")[0].ChildNodes[0].ChildNodes[0];

        string minvalue = colorNode.Attributes["minValue"].Value;
        string bgColor = chartNode.Attributes["bgColor"].Value;
编辑:这段代码现在应该可以工作了,但是使用发布的XPath建议之一可能会更容易一些

只需使用XPath:

var minValue = doc.SelectSingleNode("//Chart/colorRange/color/@minValue").Value;
只需使用XPath:

var minValue = doc.SelectSingleNode("//Chart/colorRange/color/@minValue").Value;

使用System.Xml.Linq中的XDocument类,您将能够这样做:

<Chart editMode='1' bgColor='FFFFFF' bgAlpha='0' showBorder='0' upperLimit='1000' >
   <colorRange> 
      <color minValue='0' maxValue='100' code='F6BD0F' />
   </colorRange>
   <value>665</value>
</Chart>
var minValue=doc.Root.Element("colorRange").Element("color").Attribute("minValue").Value;

var bgColor = doc.Root.Attribute("bgColor").Value;

使用System.Xml.Linq中的XDocument类,您将能够这样做:

<Chart editMode='1' bgColor='FFFFFF' bgAlpha='0' showBorder='0' upperLimit='1000' >
   <colorRange> 
      <color minValue='0' maxValue='100' code='F6BD0F' />
   </colorRange>
   <value>665</value>
</Chart>
var minValue=doc.Root.Element("colorRange").Element("color").Attribute("minValue").Value;

var bgColor = doc.Root.Attribute("bgColor").Value;


但是他没有查找minValue属性的值。但是他没有查找minValue属性的值。我得到以下错误“System.Xml.XmlNode”不包含“GetElementsByTagName”的定义,并且找不到接受类型为“System.Xml.XmlNode”的第一个参数的扩展方法“GetElementsByTagName”(您是否缺少using指令或程序集引用?@mahesh,对不起-我已经编辑了该代码,现在它应该是System.Xml.XmlNodeList.this[int]的最佳重载方法匹配有一些是无效的arguments@mahesh,确定,修复并编译测试我收到以下错误“System.Xml.XmlNode”不包含“GetElementsByTagName”的定义,并且找不到接受类型为“System.Xml.XmlNode”的第一个参数的扩展方法“GetElementsByTagName”(您是否缺少using指令或程序集引用?@mahesh,对不起-我已经编辑了该代码,现在它应该是System.Xml.XmlNodeList.this[int]的最佳重载方法匹配有一些是无效的arguments@mahesh,好的,修复并编译测试他正在查找值节点的内容,他想提取665这不是问题-doc.Root.Element(“Value”).Value。你读过他的问题吗?“如何从颜色节点访问minvalue的值,从图表节点访问bgcolor的值?”你是对的,我被他的代码误导了:XmlNodeList xmlnode=doc.GetElementsByTagName(“value”);它根本不看minValue。很抱歉,他正在查找value节点的内容,他想提取665它不是问题-doc.Root.Element(“value”).value。你读过他的问题了吗?“如何从颜色节点访问minvalue的值,从图表节点访问bgcolor的值?”没错,我被他的代码误导了:XmlNodeList xmlnode=doc.GetElementsByTagName(“值”);这一点在minValue上根本看不到。很抱歉,感谢您提供了非常有用的回复,我可以通过以下代码访问该minValue吗?var minValue=doc。选择SingleNode(“//Chart/colorRange/color/@minValue”)。Value;在在线测试仪中测试它,您会发现这一点;-)这里:感谢非常有用的回复,我可以通过以下代码访问该minValue吗?var minValue=doc.SelectSingleNode(“//Chart/colorRange/color/@minValue”)。Value;在在线测试仪中测试它,您将在这里找到它;-):