C# 从xml文件解析属性

C# 从xml文件解析属性,c#,xml,parsing,xmldocument,C#,Xml,Parsing,Xmldocument,我正在尝试分析以下内容: <?xml version="1.0" encoding="utf-8"?> <GC> <CREATED>01/23/2014 16:10:18</CREATED> <DATA> <CONTAINER name="home" type="xml" version="1.1.0.0"> <HEADER> <ATTRIBUTE name="l

我正在尝试分析以下内容:

<?xml version="1.0" encoding="utf-8"?>
<GC>
  <CREATED>01/23/2014 16:10:18</CREATED>
  <DATA>
    <CONTAINER name="home" type="xml" version="1.1.0.0">
      <HEADER>
        <ATTRIBUTE name="lang" value="EN" />
        <ATTRIBUTE name="destination" value="UK" />
      </HEADER>
    </CONTAINER>
  </DATA>
</GC>

似乎不起作用,很遗憾,需要一些帮助。非常感谢。

使用
LINQ to XML
可以得到如下结果:

XDocument xDoc = XDocument.Load("path");
var element = xDoc.Descendans("ATTRIBUTE").First();
var nameAttribute = (string)element.Attribute("name");

这将获得属性标记中的属性值,该属性的名称==lang:

XmlDocument Doc = new XmlDocument();
Doc.Load(@path);
XmlNode node = Doc.DocumentElement.SelectSingleNode("/GC/DATA/CONTAINER/HEADER/ATTRIBUTE[@name='lang']");
string SI = node.Attributes["value"].InnerText;
这可以做到:

XmlNode node = 
 Doc.SelectSingleNode("/GC/DATA/CONTAINER/HEADER/ATTRIBUTE[@name = 'lang']/@value");
string SI = node.InnerText;
我建议使用空检查:

XmlNode node = 
 Doc.SelectSingleNode("/GC/DATA/CONTAINER/HEADER/ATTRIBUTE[@name = 'lang']/@value");
string SI = null;
if(node != null)
{
    SI = node.InnerText;
}

属性的名称是
name
-值是
lang
您试图实现什么
lang
是内部文本。您正在尝试查找
name
的值吗?我想知道它应该包含什么值@name='lang'
XmlNode node = 
 Doc.SelectSingleNode("/GC/DATA/CONTAINER/HEADER/ATTRIBUTE[@name = 'lang']/@value");
string SI = node.InnerText;
XmlNode node = 
 Doc.SelectSingleNode("/GC/DATA/CONTAINER/HEADER/ATTRIBUTE[@name = 'lang']/@value");
string SI = null;
if(node != null)
{
    SI = node.InnerText;
}