如何通过使用C#读取XML中特定节点元素下的属性值? [英] How to read a attribute Value under Specific (Node)Element in XML by using C#?

查看:1070
本文介绍了如何通过使用C#读取XML中特定节点元素下的属性值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

实际上,我想阅读以下XML文档并将serverName带到C#变量中.我尝试使用XML Reader.但是它对我不起作用.有人可以帮我解决这个问题.

XML文件是:


 <?  xml    版本  ="  ? > 
<   ServerConfig  > 
  <   ServerName  >  Testserver <  /ServerName  > 
<  /ServerConfig  >  



在C#类中:


public static string getServer()
        {
            string serverName = "";
            XmlTextReader reader = new XmlTextReader(filename);
            XmlNodeType nType = reader.NodeType;
            //XmlReaderSettings settings = new XmlReaderSettings();
            //settings.IgnoreWhitespace = true;
            //settings.IgnoreComments = true;
            while (reader.Read())
            {
                if (reader.IsStartElement())
                {
                    if (reader.Name == "ServerName")
                    {

                        reader.MoveToFirstAttribute();
                        string attribute = reader.Value.ToString();
                        if (attribute != null)
                        {
                            serverName = attribute.ToString();
                            break;
                        }

                    }
                }
            }
            return (serverName);

        }





因此它确实没有用!如果有人可以告诉我如何使用C#进行操作,那对我来说将是一个很大的帮助.谢谢!! blockquote>以下应该起作用:

 XElement子级;
字符串str = @" xml  版本  ="   1.0"? > 
    <   ServerConfig  > 
      <   ServerName  >  Testserver <  /ServerName  > 
    <  /ServerConfig  > ;
XDocument doc = XDocument.Parse(str);
child = doc.Descendants("ServerName").FirstOrDefault();
字符串名称= child.Value; 


您正在尝试读取节点的属性,但是在您的示例中,节点没有属性. "Testserver"是< servername>的值.节点,而不是属性.

 公共 静态 字符串 getServer()
{
    字符串 serverName = " ;
    XmlTextReader reader =  XmlTextReader(filename);
    XmlNodeType nType = reader.NodeType;
    //  XmlReaderSettings设置= new XmlReaderSettings(); 
    //  settings.IgnoreWhitespace = true; 
    //  settings.IgnoreComments = true; 
     while (reader.Read())
    {
        如果(reader.Name == " 跨度>)
        {
            serverName = reader.Value;
             break ;
        }
    }
    返回 serverName;
} 


Actually i want to read following XML doc and take the serverName to a C# variable.I tried using XML reader .but it didn''t work for me. can some one help me on this matter.

XML file is :


<?xml version="1.0"?>
<ServerConfig>
  <ServerName>Testserver</ServerName>
</ServerConfig>



in C# class :


public static string getServer()
        {
            string serverName = "";
            XmlTextReader reader = new XmlTextReader(filename);
            XmlNodeType nType = reader.NodeType;
            //XmlReaderSettings settings = new XmlReaderSettings();
            //settings.IgnoreWhitespace = true;
            //settings.IgnoreComments = true;
            while (reader.Read())
            {
                if (reader.IsStartElement())
                {
                    if (reader.Name == "ServerName")
                    {

                        reader.MoveToFirstAttribute();
                        string attribute = reader.Value.ToString();
                        if (attribute != null)
                        {
                            serverName = attribute.ToString();
                            break;
                        }

                    }
                }
            }
            return (serverName);

        }





so it did nt work!!if some one could tell me how to do it in C#.That would be a great help for me.Thanks in advance!!!

解决方案

The following should work:

XElement child;
string str = @"<?xml version=""1.0""?>
    <ServerConfig>
      <ServerName>Testserver</ServerName>
    </ServerConfig>";
XDocument doc = XDocument.Parse(str);
child = doc.Descendants("ServerName").FirstOrDefault();
string name = child.Value;


You''re trying to read node''s attribute, but in your example nodes have no attributes. ''Testserver'' is value of <servername> node, not attribute.

public static string getServer()
{
    string serverName = "";
    XmlTextReader reader = new XmlTextReader(filename);
    XmlNodeType nType = reader.NodeType;
    //XmlReaderSettings settings = new XmlReaderSettings();
    //settings.IgnoreWhitespace = true;
    //settings.IgnoreComments = true;
    while (reader.Read())
    {
        if (reader.Name == "ServerName")
        {
            serverName = reader.Value;
            break;
        }
    }
    return serverName;
}


这篇关于如何通过使用C#读取XML中特定节点元素下的属性值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆