如何在没有循环的情况下获取属性 xml C#

How to get attribute xml without loop c#

我有 xml 个这样的文件

> <?xml version='1.0' ?> 
   <config> 
     <app> 
       <app version="1.1.0" />
>    </app>
   </config>

我想从节点应用程序读取属性版本 没有这样的循环 while(reader.read()) 或 foreach 等

谢谢

你可以这样做。

XmlDocument doc = new XmlDocument();
string str = "<config><app><app version=" + "\"1.1.0\"" + "/></app></config>";
            doc.LoadXml(str);
            var nodes = doc.GetElementsByTagName("app");
            foreach (XmlNode node in nodes)
            {
                if (node.Attributes["version"] != null)
                {
                    string version = node.Attributes["version"].Value;
                }
            }

并且您需要这个 for 循环,因为您有两个同名 App 的节点。 如果您有一个名为 App 的节点,

XmlDocument doc = new XmlDocument();
            string str = "<config><app version=" + "\"1.1.0\"" + "/></config>";
            doc.LoadXml(str);
            var node = doc.SelectSingleNode("//app");
                if (node.Attributes["version"] != null)
                {
                    string version = node.Attributes["version"].Value;
                    Console.WriteLine(version);
                }
XmlDocument document = new XmlDocument();
document.Load("D:/source.xml");

XmlNode appVersion1 = document.SelectSingleNode("//app[@version]/@version");
XmlNode appVersion2 = document["config"]["app"]["app"].Attributes["version"];

Console.WriteLine("{0}, {1}", 
    appVersion1.Value, 
    appVersion2.Value);

你可以使用 linq 来做

    string stringXml= "yourXml Here";
    XElement xdoc = XElement.Parse(stringXml);

    var result= xdoc.Descendants("app").FirstOrDefault(x=> x.Attribute("version") != null).attribute("version").Value;

或:

    var result = xdoc.Descendants("app").Where(x => x.Attribute("version") != null)
                                        .Select(x => new { Version =  x.Value });