C#xmlReader简单XML
我有一些简单的XML,比如:C#xmlReader简单XML,c#,xml,xmlreader,C#,Xml,Xmlreader,我有一些简单的XML,比如: ftp://ftp.example.com/ 琼多 密码123 我想用这个C代码: 当我只想读一个内容(比如地址)时,它工作正常,但当我想读更多/下一个内容时,它就失败了。我认为这是合乎逻辑的,但似乎不是。如何读取XML及其所有元素:地址、用户和密码?我想使用XmlReader来实现这一点。我能想到的最简单的形式是: XElement xml = XElement.Parse(File.ReadAllText(xmlPath)); var ftpAddress
ftp://ftp.example.com/
琼多
密码123
我想用这个C代码:
当我只想读一个内容(比如地址)时,它工作正常,但当我想读更多/下一个内容时,它就失败了。我认为这是合乎逻辑的,但似乎不是。如何读取XML及其所有元素:地址、用户和密码?我想使用XmlReader来实现这一点。我能想到的最简单的形式是:
XElement xml = XElement.Parse(File.ReadAllText(xmlPath));
var ftpAddress = xml.Element("address").Value;
var ftpUser = xml.Element("user").Value;
var ftpPwd = xml.Element("user").Value;
当然,您应该通过检查空值和文件是否存在来增加一些安全性
更新:我将通过以下方式实现故障保护版本:
if (!File.Exists(xmlPath))
throw new FileNotFoundException(string.Format("The FTP configuration file {0} is missing", xmlPath));
XElement xml = XElement.Parse(File.ReadAllText(xmlPath));
var ftpAddress = GetConfigValue(xml, "address");
var ftpUser = GetConfigValue(xml, "user");
var ftpPwd = GetConfigValue(xml, "password");
使用如下GetConfigValue:
private static string GetConfigValue(XContainer parent, XName name)
{
var element = parent.Element(name);
if (element == null)
throw new ArgumentException(string.Format("Invalid configuration file, missing element {0}", name));
return element.Value;
}
您是否考虑过创建一个基本视图模型,然后将xml反序列化到您的视图模型中?我只需要一个简单的方法来读取该xml。没有什么比为XML构建视图模型更广泛的了。谢谢。它运行得很好。你能告诉我你将如何以简单/优雅的方式进行安全检查吗?谢谢丹尼斯·托马斯,这就是我所需要的!
private static string GetConfigValue(XContainer parent, XName name)
{
var element = parent.Element(name);
if (element == null)
throw new ArgumentException(string.Format("Invalid configuration file, missing element {0}", name));
return element.Value;
}