我有一个Xml
文档看起来像这样(它包含更多显示的父母和子女):
<item cid="0x12e3">
<item cid="0x1310">
<item cid="0x158b">
<item luid="2001"/>
<item luid="2002"/>
</item>
<item cid="0x13313">
<item luid="2001"/>
<item luid="2002"/>
</item>
...
</item>
</item>
并且我还有一个Xml
文档,其中包含以下属性:
<?xml version="1.0" encoding="UTF-8"?>
<EditorRule>
<Properties>
<Property name="Comment" luid="2001"/>
...
</Properties>
</EditorRule>
现在,我在两个文件之间Join
Select
XElements
来自first xml
的{{1}} Second xml
< / p>
(from element in Element.Elements().Elements().Elements()
join property in propertiesFromFile on element.Attribute("luid").Value equals property.Luid
select new IpjItem(element));
这很好用,当我对此IEnumerable
进行迭代时,它会打印Name="Comment"
,依此类推。
我的问题是它只适用于第一个XElement.
所以,回到first Xml
。它仅使用Children
从节点打印cid = 0x158b
。完成该元素后,它会抛出NullReferenceException
而不会转到cid = 0x13313
的那个。为什么会这样?
谢谢!
答案 0 :(得分:0)
是。在@Selman22
警觉推断时,我的问题出在Element.Elements()
。我还添加了一个更好的Where
子句来检查属性是否存在。
return (from element in Element.Elements()
where element.Attribute("luid") != null
join property in RuleEditorXml.Properties on element.Attribute("luid").Value equals property.Luid
select new IpjItem(element, Parent));