首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在C#中从XmlNode读取属性值?

如何在C#中从XmlNode读取属性值?
EN

Stack Overflow用户
提问于 2009-10-21 18:50:51
回答 7查看 290.7K关注 0票数 123

假设我有一个名称,我想要获取一个名为“XmlNode”的属性的值。我该怎么做呢?

代码语言:javascript
复制
XmlTextReader reader = new XmlTextReader(path);

XmlDocument doc = new XmlDocument();
XmlNode node = doc.ReadNode(reader);

foreach (XmlNode chldNode in node.ChildNodes)
{
     **//Read the attribute Name**
     if (chldNode.Name == Employee)
     {                    
         if (chldNode.HasChildNodes)
         {
             foreach (XmlNode item in node.ChildNodes)
             { 

             }
         }
      }
}

XML文档:

代码语言:javascript
复制
<Root>
    <Employee Name ="TestName">
    <Childs/>
</Root>
EN

回答 7

Stack Overflow用户

发布于 2013-01-03 09:55:02

为了扩展Konamiman的解决方案(包括所有相关的null检查),这是我一直在做的事情:

代码语言:javascript
复制
if (node.Attributes != null)
{
   var nameAttribute = node.Attributes["Name"];
   if (nameAttribute != null) 
      return nameAttribute.Value;

   throw new InvalidOperationException("Node 'Name' not found.");
}
票数 44
EN

Stack Overflow用户

发布于 2009-10-21 18:54:57

您可以像处理节点一样遍历所有属性

代码语言:javascript
复制
foreach (XmlNode item in node.ChildNodes)
{ 
    // node stuff...

    foreach (XmlAttribute att in item.Attributes)
    {
        // attribute stuff
    }
}
票数 17
EN

Stack Overflow用户

发布于 2016-05-19 20:01:10

如果使用chldNode作为XmlElement,而不是XmlNode,则可以使用

代码语言:javascript
复制
var attributeValue = chldNode.GetAttribute("Name");

如果属性名称不存在,则返回return value will just be an empty string

因此,您的循环可能如下所示:

代码语言:javascript
复制
XmlDocument document = new XmlDocument();
var nodes = document.SelectNodes("//Node/N0de/node");

foreach (XmlElement node in nodes)
{
    var attributeValue = node.GetAttribute("Name");
}

这将选择由<Node><N0de></N0de><Node>标签包围的所有节点名称,随后循环遍历它们并读取属性“<node>”。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1600065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档