【问题标题】:How to get the value of root element in xml如何获取xml中根元素的值
【发布时间】:2013-09-25 00:35:06
【问题描述】:

我正在尝试制作一个 Windows RT 程序,但我似乎无法弄清楚如何获取根元素的值。 xml文档只包含:

<double>0.7423</double>

如何使用 c# 和窗口存储获取值“0.7422”?每次我尝试某些东西时,它都会返回一个空值。

这是我迄今为止尝试过的:

            `var getRate = from query in xmlDoc.Descendants("double")
                             select new
                             {
                                 Rate = query.Value
                             };

            foreach (var query in getRate)
            {
                rate = Convert.ToDouble(query.Rate);

            }`

我也试过这个:

`var rate= xmlDoc.Root.Element("double").Value;

 var rate= xmlDoc.Element("double").Value;

 rate = (double)XElement.Load(xmlstream);`

但是 rate 总是返回一个空值。

【问题讨论】:

  • Every time I try something it returns a null value. 你能告诉我们你的尝试吗?
  • 请发布 XML 内容,因为对你工作的东西对我有用。
  • 这里是您可以找到 xml 文档的 Web 链接:link

标签: c# xml microsoft-metro windows-store-apps


【解决方案1】:

试试这个

string xml = "<double>0.7423</double>";
var document = XDocument.Parse(xml);
var doubleValue = document.Descendants("double").FirstOrDefault().Value;

【讨论】:

    【解决方案2】:

    您可以通过Root 属性访问文档的根元素:

    double d = (double)XDocument.Load(path_to_xml).Root;
    

    但在这种情况下,您甚至不需要创建文档。您可以创建元素:

    double d = (double)XElement.Load(path_to_xml);
    

    【讨论】:

      【解决方案3】:

      未测试,但我认为这是个好方法

      XmlDocument doc = new XlmDocument();
      doc.Load("path");
      XmlNode root = doc.DocumentElement.InnerText
      

      【讨论】:

        【解决方案4】:

        很明显:

        internal class Program
        {
            private static void Main(string[] args)
            {
                var xml = "<double>0.7423</double>";
        
                Debug.WriteLine("Method1: {0}", Method1(xml));
                Debug.WriteLine("Method2: {0}", Method2(xml));
                Debug.WriteLine("Method3: {0}", Method3(xml));
            }
        
            private static double Method1(string xml)
            {
                var xdoc = XDocument.Parse(xml);
                var doubleStr = xdoc.Root.Value;
                var doubleValue = double.Parse(doubleStr, CultureInfo.InvariantCulture);
                return doubleValue;
            }
        
            private static double Method2(string xml)
            {
                var xmlDoc = new XmlDocument();
                xmlDoc.LoadXml(xml);
                return double.Parse(xmlDoc.FirstChild.InnerText, CultureInfo.InvariantCulture);
            }
        
            private static double Method3(string xml)
            {
                var doubleStr = xml.Substring(
                    xml.IndexOf(">") + 1,
                    xml.IndexOf("</") - xml.IndexOf(">") - 1
                    );
        
                return double.Parse(doubleStr, CultureInfo.InvariantCulture);
            }
        }
        

        【讨论】:

          【解决方案5】:

          花了我一段时间,但它比我想象的要简单。我是这样做的:

                      var xelement = XElement.Parse(outputtext);
                      rate = (double)xelement;
          

          感谢大家的帮助/建议!

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多