从xml文件解析属性

时间:2014-01-27 15:33:06

标签: 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="lang" value="EN" />
        <ATTRIBUTE name="destination" value="UK" />
      </HEADER>
    </CONTAINER>
  </DATA>
</GC>

name =“lang”时如何查找

到目前为止,我有这个:

XmlDocument Doc = new XmlDocument();
Doc.Load(@path);
XmlNode node = Doc.DocumentElement.SelectSingleNode("/GC/DATA/CONTAINER/HEADER/ATTRIBUTE/NAME");
string SI = node.Attributes["lang"].InnerText;

不幸的是,似乎没有工作,可以使用一些帮助。非常感谢。

4 个答案:

答案 0 :(得分:0)

使用LINQ to XML你可以这样得到它:

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

答案 1 :(得分:0)

这将为您提供ATTRIBUTE标记中属性的值,该标记的名称为== 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;

答案 2 :(得分:0)

    XmlNode node = Doc.DocumentElement.SelectSingleNode("/GC/DATA/CONTAINER/HEADER/ATTRIBUTE[@name='lang']");
    string SI = node.Attributes["value"].Value;

答案 3 :(得分:0)

这样做:

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;
}