簡體   English   中英

C#xmlReader簡單XML

[英]C# xmlReader simple XML

我有簡單的XML,例如:

<?xml version="1.0" encoding="utf-8"?>
<ftp>
    <address>ftp://ftp.example.com/</address>
    <user>jondoe</user>
    <password>Password123</password>
</ftp>

我想使用此C#代碼:

using (XmlReader reader = XmlReader.Create(xmlPath))
{
    reader.ReadToFollowing("address");
    string ftpAddress = reader.ReadElementContentAsString();
    reader.ReadToFollowing("user");
    string ftpUser = reader.ReadElementContentAsString();
    reader.ReadToFollowing("password");
    string ftpPw = reader.ReadElementContentAsString();
}

當我只想閱讀一個內容(例如地址)時,它工作正常,但是當我想閱讀更多/下一個內容時,它會失敗。 我認為這是合乎邏輯的,但似乎並非如此。 如何讀取該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;

當然,您應該通過檢查null值以及文件是否存在來增加一些安全性。

更新:

我將以這種方式實現故障安全版本:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM