一位同事在尝试查询时遇到了一个非常不寻常的 XML 文件的问题,在尝试帮助他之后,我和其他人有点创意障碍....看看这个,它可能会感兴趣这里很多人......
结构:
<Root>
<MainFoo>
<Foo>
<A bla="bla" />
<B bla1="blablabla" />
<C bla2="blabla" />
<Bar N="Education" V="Some Text" />
<Bar N="Other Node" V="Some other Text" />
<Bar N="Yet Other Node" V="Some other other Text" />
<Bar N="fourth Bar Node" V="Some other other otherText" />
<Bar N="UserID" V="1" />
</Foo>
<Foo>
<A bla="bla" />
<B bla1="blablabla" />
<C bla2="blabla" />
<Bar N="Education" V="Specific Text" />
<Bar N="Other Node" V="Some other Text" />
<Bar N="Yet Other Node" V="Some other other Text" />
<Bar N="fourth Bar Node" V="Some other other otherText" />
<Bar N="UserID" V="2" />
</Foo>
<Foo>
<A bla="bla" />
<B bla1="blablabla" />
<C bla2="blabla" /> <!--***No Bar node with N="Education" in this Foo Node, not a mistake! this might be part of the problem but this is the XML Structure and can't be changed***-->
<Bar N="Other Node" V="Some other Text" />
<Bar N="Yet Other Node" V="Some other other Text" />
<Bar N="fourth Bar Node" V="Some other other otherText" />
<Bar N="UserID" V="3" />
</Foo>
<Foo>
<A bla="bla" />
<B bla1="blablabla" />
<C bla2="blabla" />
<Bar N="Education" V="Specific Text" />
<Bar N="Other Node" V="Some other Text" />
<Bar N="Yet Other Node" V="Some other other Text" />
<Bar N="fourth Bar Node" V="Some other other otherText" />
<Bar N="UserID" V="4" />
</Foo>
</MainFoo>
<OtherMainFoo></OtherMainFoo>
<MoreMainFoo></MoreMainFoo>
</Root>
好的,现在解决手头的问题:我们正在尝试使用 LINQ to XML 将每个用户节点的每个用户 ID 值转换为每个Foo 元素的字符串 IF此 Foo 中有一个Bar 节点和此Bar 节点的 N 属性是“教育”并且仅当具有教育属性的此条形节点的 V 的值不包含我们在 LINQ 中指定的单词时
例如,如果我们希望具有教育的 Foo 节点的所有用户 ID 不包含单词“Some”,我们将得到 2,4 的结果,因为 Foo 1 的 Bar 节点具有 N 属性的教育值,但它在 V 属性中有 Some 字符串和 Foo 编号 3 在它的 N 属性中没有带有 Education 值的 Bar 节点(非常重要,因为我们认为这是我们一直得到空结果的原因之一我们曾经这样做过)。
这里的任何 LINQ to XML 专家都有一个想法,这对于 XML 来说是一个非常不寻常的场景,但那是我们必须处理的问题,而且我认为这个问题会让很多人感兴趣。