简体   繁体   English

从xml文件解析属性

[英]parsing attribute from xml file

I'm trying to parse the following: 我正在尝试解析以下内容:

<?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>

How do I go about finding the value when name="lang" ? name =“ lang”时,如何查找

So far I have this: 到目前为止,我有这个:

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

Doesn't seem to work unfortunately, could use some help. 似乎并不奏效,可以使用一些帮助。 Many thanks. 非常感谢。

With using LINQ to XML you can get it like this: 通过使用LINQ to XML您可以像这样获得它:

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

This will get you the value of the attribute in the ATTRIBUTE tag which has name == lang: 这将为您获得名称== lang的ATTRIBUTE标记中的属性值:

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.DocumentElement.SelectSingleNode("/GC/DATA/CONTAINER/HEADER/ATTRIBUTE[@name='lang']");
    string SI = node.Attributes["value"].Value;

This will do it: 可以做到这一点:

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

And I would advise using a null check: 我建议使用空检查:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM