【发布时间】:2012-08-09 18:03:15
【问题描述】:
我无法从我的 XML 中获取元素。我无法从我的 XML 中获取 Vehicles 或 Vehicle 元素,它总是返回 null。
谁能看出我哪里出错了?
这是我的代码...
[TestMethod]
public void TestDeleteVehicleFromXMLFile()
{
using (FileStream stream = new FileStream(base._TestXPathXMLFile, FileMode.Open))
{
try
{
XDocument xDoc = XDocument.Load(stream);
var q = from RootNode in xDoc.Descendants("VehicleCache")
select new
{
// Vehicles & VehiclesList is always null
Vehicles = RootNode.Elements(XName.Get("Vehicle")).ToList(),
VehiclesList = RootNode.Elements(XName.Get("Vehicles")).ToList(),
SelfNode = RootNode.DescendantNodesAndSelf().ToList(),
DescendantNodes = RootNode.DescendantNodes().ToList()
};
// used to see what is in item
foreach (var item in q)
{
int i = 0;
}
}
catch(Exception E)
{
Assert.Fail(E.Message);
}
}
}
<VehicleCache>
<Vehicles xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.myURL.co.uk">
<Vehicle>
<CapCode>41653</CapCode>
<TrueCap i:nil="true" />
<VehicleID>365789</VehicleID>
<ViperVehicleID i:nil="true" />
<BodyTypeID>5</BodyTypeID>
</Vehicle>
<Vehicle>
<CapCode>42565</CapCode>
<TrueCap i:nil="true" />
<VehicleID>365845</VehicleID>
<ViperVehicleID i:nil="true" />
<BodyTypeID>2</BodyTypeID>
</Vehicle>
</Vehicles>
【问题讨论】:
-
你里面有命名空间吗?
-
感谢您的回答 - 我的问题是,当我多年前使用 Xpath 时,我可以在不知道 ns 的情况下获得一个节点,您是否总是需要知道命名空间使用 LINQ to XML 获取元素?
-
@Truegilly,请检查编辑后的答案。
标签: c# linq-to-xml