【问题标题】:Problem with accessing xml node value in asp.net在 asp.net 中访问 xml 节点值的问题
【发布时间】:2011-09-13 11:39:57
【问题描述】:

我已经编写了以下asp.net代码,如何从颜色节点访问最小值和从图表节点访问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>

【问题讨论】:

    标签: c# asp.net xml xmldocument


    【解决方案1】:

    只需使用 XPath:

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

    【讨论】:

    • 但他不是在寻找 minValue 属性的值。
    【解决方案2】:

    试试这个..

            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 建议之一可能会更容易

    【讨论】:

    • 我收到以下错误“System.Xml.XmlNode”不包含“GetElementsByTagName”的定义,并且没有扩展方法“GetElementsByTagName”接受“System.Xml.XmlNode”类型的第一个参数可以找到(您是否缺少 using 指令或程序集引用?)
    • @mahesh,抱歉 - 我已经编辑了该代码,现在应该可以使用了
    • System.Xml.XmlNodeList.this[int] 的最佳重载方法匹配有一些无效参数
    • @mahesh,好的,已修复并经过编译测试
    【解决方案3】:

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

    Online XPath Tester

    然后您将意识到您可以使用这样的 XPATH 选择您的值,例如:

    //Chart/Value
    

    【讨论】:

    • 感谢非常有用的回复,我可以通过以下代码访问该 minValue 吗? var minValue = doc.SelectSingleNode("//Chart/colorRange/color/@minValue").Value;
    • 在在线测试仪中测试它,你会发现这个;-)在这里:mizar.dk/XPath/Default.aspx
    【解决方案4】:

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

    var minValue=doc.Root.Element("colorRange").Element("color").Attribute("minValue").Value;
    
    var bgColor = doc.Root.Attribute("bgColor").Value;
    

    【讨论】:

    • 他在寻找Value节点的内容,他要提取665
    • 这不是问题 - doc.Root.Element("value").Value。你读过他的问题吗? "如何从颜色节点访问 minvalue 和从图表节点访问 bgcolor 的值?"
    • 你是对的,我被他的代码误导了:XmlNodeList xmlnode = doc.GetElementsByTagName("value");这根本看不到 minValue。对此感到抱歉
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多