我有一个XDocument对象,试图从中提取指定特定条件的所有List。

以下是我的XML

<MyQueue xmlns:ns0 = "http://myprogram">  
    <ns0:QueueReport>  
        <ns0:number>001</ns0:number>
        <ns0:id>A</ns0:id>
        <ns0:name>ABC</ns0:name>
        <ns0:hours>1</ns0:hours>
    </ns0:QueueReport>
    <ns0:QueueReport>
        <ns0:number>001</ns0:number>
        <ns0:id>B</ns0:id>
        <ns0:name>ABC</ns0:name>
        <ns0:hours>2</ns0:hours>
    </ns0:QueueReport>
    <ns0:QueueReport>
        <ns0:number>001</ns0:number>
        <ns0:id>B</ns0:id>
        <ns0:name>ABC</ns0:name>
        <ns0:hours>10</ns0:hours>
    </ns0:QueueReport>
    <ns0:QueueReport>
        <ns0:number>002</ns0:number>
        <ns0:id>A</ns0:id>
        <ns0:name>ABC</ns0:name>
        <ns0:hours>12</ns0:hours>
    </ns0:QueueReport>
    <ns0:QueueReport>
        <ns0:number>003</ns0:number>
        <ns0:id>A</ns0:id>
        <ns0:name>ABC</ns0:name>
        <ns0:hours>20</ns0:hours>
    </ns0:QueueReport>
</ns0:MyQueue>

上面的XML在一个名为xdoc的XDocument对象中。 我编写以下内容来演练节点及其子级。

XNamespace b = @"http://myprogram";
var elements =  from e xdoc.Elements(b + "MyQueue")
        where e.Element(b + "QueueReport").Element(b + "number").Value == "001"
        && e.Element(b + "QueueReport").Element(b + "id").Value == "B"
        select e.Elements(b + "QueueReport").ToList();

(请原谅代码中的错别字,因为它不是在编辑器中编写的)

elements变量没有任何结果,理想情况下,我期望List中的以下两个元素。

<ns0:QueueReport>
    <ns0:number>001</ns0:number>
    <ns0:id>B</ns0:id>
    <ns0:name>ABC</ns0:name>
    <ns0:hours>2</ns0:hours>
</ns0:QueueReport>

    <ns0:QueueReport>
        <ns0:number>001</ns0:number>
        <ns0:id>B</ns0:id>
        <ns0:name>ABC</ns0:name>
        <ns0:hours>10</ns0:hours>
    </ns0:QueueReport>

请帮忙,我是Linq的新手,对我还能如何实现这一点几乎一无所知。

===============>>#1 票数:0

这是我的问题的答案,我可以稍加思索地进行操作。

XNamespace b = @"http://myprogram";
var elements =  from e xdoc.Elements(b + "MyQueue").(b + "QueueReport")
    where e.Element(b + "number").Value == "001"
    && e.Element(b + "id").Value == "B"
    select e;

  ask by user2179891 translate from so

未解决问题?本站智能推荐:

3回复

XDocument到XElement

如何将XDocument转换为XElement? 我通过搜索找到了以下内容,但是它用于在XDocument和XmlDocument之间进行转换,而不是XDocument和XElement。 我找不到任何将XDocument转换为XElement的东西。 任何帮助,将不胜感激。
1回复

在XElement的Where子句中使用For Each循环

我正试图为每个循环编写一个循环,循环遍历xml文档的后代,但仅循环满足条件的循环。 我以为我可以使用where子句来做到这一点,但是我对此有疑问。 如果有人可以让我知道这是否确实可行,或者是否有另一种方式可以做到这一点,那将是很棒的。 我正在VB.Net中编码,到目前为止,我的代码
1回复

使用XDocument / XElement解析XML数据

尝试通过RSS提要解析博客时,我遇到了一个问题。 虽然每个元素都可以进入我的班级,但包含实际内容的元素始终为空。 <content:encoded>THIS IS FULL OF HTML </content:encoded> 多数民众赞成在XML行,它似乎
1回复

如何将XElement列表转换为XDocument?

我的工作是根据某些条件从XML中删除一些节点,然后将更改后的XML解析为字符串。 要做到这一点: 我将字符串(workingData)转换为Xdocument,然后添加了一个条件以选择效果良好的xelements(abc)。 现在,我需要帮助,以在doc中使用已删除的节点用新的
1回复

StyleCop使用XDocument / XElement / XAttribute快乐创建Xml

我喜欢使用以下格式创建xml: 它似乎很容易阅读,有点像标签式XML文档(在我看来)。 StyleCop对格式化非常不满意。 我收到很多这些错误: SA1116:如果方法参数位于单独的行上,则第一个参数必须从方法名称下面的行开始。 SA1118:参数跨越多行。 如果参数
1回复

如何使用XDocument和XElement插入子标记?

我有这个xml架构,需要在其中添加一个子标记: <?xml version="1.0" encoding="utf-8"?> <PFA> <Entity id="123" action="add" date="04-Nov-2017"></Entity&
1回复

使用Linq在XDocument中搜索具有某些属性的XElement

我有一个看起来像这样的XML文档: 我希望我的代码找到带有x:Name mainTab的XElement TabItem。 这是我的代码的样子: 但这是行不通的,没有结果。 请指教。
1回复

使用where子句的XElement linq to XML查询的“上下文实例”

我想从XElement集合返回一个字符串值列表,并且在构造代码时收到此错误,但看不到我所缺少的内容。 这是我编写的属于该问题的课程的一部分: XElement集合的形式为
1回复

将Xelement附加到Xdocument

我有以下xdocument,我尝试使用以下代码在items元素内追加item元素: 由于找不到items元素,因此无法使用。 我认为这是名称空间的问题,但我似乎无法使其正常工作。 任何帮助都感激不尽。
1回复

使用XDocument读取csproj时,检索此XElement的更好方法是什么?

我正在将文件添加到vs.net之外的cs项目中(图像,css等,是我们组之外的文件,但需要发布)。 我正在加载csproj并查询包含“内容”节点的ItemGroup。 有没有更好的方法来吸引这个团体? 谢谢。