我尝试了很多尝试并做了大量的阅读和研究。最后的代码最终读取了我的XML文件,并在我的XML文件中获得了正确的行数。但是,我在字典类型变量中得到的是Null值
这是我的代码:
public void ParkingStatus()
{
_Default defaultPage = new _Default();
//baca dari XML file
XDocument xmlDocReader = XDocument.Load(@".\carpark.xml");
var tempDict = xmlDocReader.Root.Elements("Lot")
.ToDictionary(c => c.Elements("name"), c => c.Elements("timeOut"));
foreach (var iterate in tempDict)
{
bool statusParking;
if (iterate.Value.ToString() == "")
statusParking = true;
else
statusParking = false;
defaultPage.ParkingStatus.Add(iterate.Key.ToString(), statusParking);
}
}
我的XML文件如下:(carpark.xml)
<?xml version="1.0" encoding="UTF-8"?>
<Lot>
<Lot name="W101" timeIn="2014-11-23 13:22" timeOut="" />
<Lot name="W102" timeIn="" timeOut="2014-11-23 13:35" />
<Lot name="W103" timeIn="" timeOut="2014-11-23 11:35" />
<Lot name="W104" timeIn="2014-11-23 13:35" timeOut="" />
<Lot name="W105" timeIn="2014-11-23 08:00" timeOut="" />
<Lot name="W106" timeIn="2014-11-23 07:56" timeOut="" />
<Lot name="W107" timeIn="" timeOut="2014-11-23 13:15" />
<Lot name="W108" timeIn="2014-11-23 07:35" timeOut="" />
<Lot name="W109" timeIn="" timeOut="2014-11-23 12:55" />
<Lot name="W110" timeIn="2014-11-23 09:00" timeOut="" />
<Lot name="W111" timeIn="" timeOut="2014-11-23 12:45" />
<Lot name="W112" timeIn="" timeOut="2014-11-23 13:01" />
</Lot>
我做错了什么?
答案 0 :(得分:2)
Lot
是一个元素,但name
,timeIn
和timeout
是属性。
<Lot name="W102" timeIn="" timeOut="2014-11-23 13:35" />
因此,您应该在Element上使用Attributes方法。
var tempDict = xmlDocReader.Root.Elements("Lot")
.ToDictionary(c => c.Attributes("name").FirstOrDefault(),
c => c.Attributes("timeOut").FirstOrDefault());
答案 1 :(得分:2)
不需要临时字典:
foreach (var el in xmlDocReader.Root.Elements("Lot"))
{
string name = (string)el.Attribute("name");
string timeOut = (string)el.Attribute("timeOut");
...
}