如何通过使用C#读取XML中特定节点元素下的属性值? [英] How to read a attribute Value under Specific (Node)Element in XML by using C#?
本文介绍了如何通过使用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屋!
查看全文