这是我的xml文件: -
<?xml version="1.0" encoding="utf-8" ?>
<Ftpservers>
<Ftpserver>
<Name>Client1</Name>
<ServerIP>10.10.10.100:1961</ServerIP>
<UserName>username</UserName>
<Password>pa$#word1</Password>
<EnableSSL>false</EnableSSL>
<UsePassive>false</UsePassive>
</Ftpserver>
<Ftpserver>
<Name>Client2</Name>
<ServerIP>10.10.10.101:1961</ServerIP>
<UserName>username</UserName>
<Password>pa$#word1</Password>
<EnableSSL>false</EnableSSL>
<UsePassive>false</UsePassive>
</Ftpserver>
</Ftpservers>
这是我的c#代码: -
public class FtpInfo
{
public string Name { get; set; }
public string ServerIp { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public bool EnableSsl { get; set; }
public bool UsePassive { get; set; }
}
var xmlReader = XDocument.Load("FtpDestination.xml");
var servers = (from f in xmlReader.Descendants("FtpServer")
select new FtpInfo
{
Name = f.Element("Name").Value,
ServerIp = f.Element("ServerIP").Value,
UserName = f.Element("UserName").Value,
Password = f.Element("Password").Value,
EnableSsl = Convert.ToBoolean(f.Element("EnableSSL").Value),
UsePassive = Convert.ToBoolean(f.Element("UsePassive").Value)
}).ToList<FtpInfo>();
foreach(var server in servers)
Console.Write(server.Name);
我正在尝试使用xdocument类读取xml文件。但无法找到我的服务器数量总是为零的原因。代码不会抛出任何错误,但根本不会读取xml数据。 请指教?
答案 0 :(得分:3)
您的代码有两个问题,
Ftpserver
不是FtpServer
。 (注意小写服务器) Name
UsePassive
排队:
UsePassive = Convert.ToBoolean(f.Element("Name").Value)
应为UsePassive
UsePassive = Convert.ToBoolean(f.Element("UsePassive").Value)
最后,虽然这不是错误,但您不需要.ToList<FtpInfo>();
只有ToList
就足够了。
所以你的陈述应该是:
var servers = (from f in xmlReader.Descendants("Ftpserver")
select new FtpInfo
{
Name = f.Element("Name").Value,
ServerIp = f.Element("ServerIP").Value,
UserName = f.Element("UserName").Value,
Password = f.Element("Password").Value,
EnableSsl = Convert.ToBoolean(f.Element("EnableSSL").Value),
UsePassive = Convert.ToBoolean(f.Element("UsePassive").Value)
}).ToList();
答案 1 :(得分:2)
UsePassive在布尔转换中失败,从Name
更改为UsePassive
。
答案 2 :(得分:2)
您的Xml节点是&#34; Ftpserver&#34;但是你正在查询&#34; FtpServer&#34;。因此查询返回零结果元素。