Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#xmlReader简单XML_C#_Xml_Xmlreader - Fatal编程技术网

C#xmlReader简单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

我有一些简单的XML,比如:


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;
}