public FileEntry ReadFileConfiguration(string id)
{
string configurationPath = "conf.xml";
XDocument data = XDocument.Load(configurationPath);
return (from c in data.Descendants("file")
where (c.Attribute("Id") != null && c.Attribute("Id").Value.Equals(id))
select new FileEntry()
{
Name = c.Element("Name").Value,
Path = c.Element("Path").Value,
SheduledTime = Convert.ToDateTime(c.Element("SheduledTime").Value),
Size = (long)Convert.ToDouble( c.Element("Size").Value),
IsFolder = Convert.ToBoolean( c.Element("IsFolder").Value),
LastAccess = Convert.ToDateTime(c.Element("LastAccess").Value),
DoEncrypt = Convert.ToBoolean( c.Element("DoEncrypt").Value)
}).First();
}
主要计划是:
main()
{
string id = "C:\\Users\\Radhesh\\Documents\\Visual Studio 2008\\Projects\\Rme\\Rme\\test.txt";
ReadFileConfiguration(id);
}
我的XML页面是:
<?xml version="1.0" encoding="utf-8" ?>
<Files>
<file Id="C:\Users\Radhesh\Documents\Visual Studio 2008\Projects\Rme\Rme\test.txt">
<Name>test.txt</Name>
<Path>C:\Users\Radhesh\Documents\Visual Studio 2008\Projects\Rme\Rme\test.txt</Path>
<IsFolder>False</IsFolder>
<DoEncrypt>True</DoEncrypt>
<Size>0</Size>
<LastAcess>7/9/2011 11:35:53 PM</LastAcess>
<SheduledTime>7/10/2011 1:59:20 PM</SheduledTime>
</file>
</Files>
我的课程:
class FileEntry
{
public string Name { get;set;}
public string Path { get; set; }
public bool IsFolder { get; set; }
public long Size { get;set; }
public DateTime LastAccess { get;set; }
public DateTime SheduledTime { get; set; }
public bool DoEncrypt { get; set; }
}
拜托,有人可以帮忙吗?
答案 0 :(得分:4)
<LastAcess>7/9/2011 11:35:53 PM</LastAcess>
LastAccess = Convert.ToDateTime(c.Element("LastAccess").Value),
注意:"Acess"
和Access
首先将其分解。
string configurationPath = "conf.xml";
XDocument data = XDocument.Load(configurationPath);
var files = from c in data.Descendants("file") select c;
Debug.WriteLine("Count = {0}", files.Count());
...
return files.First();
这应输出1(或更高)。
如果成功,请在where
之前添加select
子句。
然后更改为完整选择部分并将Name = c.Element("Name").Value,
行1添加到1.
答案 1 :(得分:1)
我按照@Henk Holterman建议的步骤进行操作,这就是为什么你会看到Null Reference Exception的原因。在您的选择中:
LastAccess = Convert.ToDateTime(c.Element("LastAccess").Value)
如果您查看XML文件,则可以:
<LastAcess>7/9/2011 11:35:53 PM</LastAcess>
简而言之,你有一个错字。查询的选择部分找不到名为“LastAccess”的元素,因此抛出Null Reference Exception。