【发布时间】:2019-11-20 02:42:13
【问题描述】:
我正在尝试按照官方 microsoft dotNet api 中的说明使用 Linq 将 XML 文件的内容加载到自定义类型列表中: https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.list-1.find?view=netframework-4.8
我的 xml 文件如下所示:
<directives>
<dir directive="Question" response="Response"></dir>
<dir directive="Q2" response="Response2"></dir>
<dir directive="Q3" response="Response3"></dir>
</directives>
并且导入代码与上面链接的示例几乎相同。
public static void ImportDirectives()
{
// Create XML elements from a source file.
XElement xTree = XElement.Load(AppDomain.CurrentDomain.BaseDirectory + "directives.xml");
// Create an enumerable collection of the elements.
IEnumerable<XElement> elements = xTree.Elements();
// Evaluate each element and set set values in the book object.
foreach (XElement el in elements)
{
Directive dir = new Directive();
dir.directive = el.Attribute("directive").Value;
IEnumerable<XElement> props = el.Elements();
foreach (XElement p in props)
{
if (p.Name.ToString().ToLower() == "response")
{
dir.response = p.Value;
}
}
Dir.Add(dir);
}
}
如果我删除根元素,代码可以正常工作,但如果我添加一个,则只将根元素添加到我的列表中。 我宁愿有一个根元素只是为了让我的 XML 看起来正确。 如何使用此代码访问根元素中的元素?
【问题讨论】: