Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中为特定元素值筛选XML#_C#_Xml - Fatal编程技术网

C# 在C中为特定元素值筛选XML#

C# 在C中为特定元素值筛选XML#,c#,xml,C#,Xml,我的xml文档如下所示: <Report> <id>820</id> <number>u_incident_1</number> <Entry> <findings>1</findings> <area>PS</area> <section>Section 1</section> <image>R0

我的
xml
文档如下所示:

<Report>
  <id>820</id>
  <number>u_incident_1</number>
  <Entry>
    <findings>1</findings>
    <area>PS</area>
    <section>Section 1</section>
    <image>R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==</image>
    <image>R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==</image>
    <image>R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==</image>
  </Entry>
  <Entry>
    <findings>2</findings>
    <area>PR</area>
    <section>Section 2</section>
    <image>R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==</image>
    <image>R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==</image>
    <image>R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==</image>
  </Entry>
  <RE_image>R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==</RE_image>
  <RE_image>R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==</RE_image>
</Report>
如何修改代码以使用
第1节
元素过滤图像?

使用xml linq:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication180
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(FILENAME);

            XElement Entry = doc.Descendants().Where(x => (x.Name.LocalName == "Entry") && ((string)x.Element("findings") == "1")).FirstOrDefault();

            XNamespace ns = Entry.GetDefaultNamespace();

            List<string> images = Entry.Elements(ns + "image").Select(x => (string)x).ToList();
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Xml;
使用System.Xml.Linq;
命名空间控制台应用程序180
{
班级计划
{
常量字符串文件名=@“c:\temp\test.xml”;
静态void Main(字符串[]参数)
{
XDocument doc=XDocument.Load(文件名);
XElement Entry=doc.subjects()。其中(x=>(x.Name.LocalName==“Entry”)&&((string)x.Element(“结果”)==“1”)。FirstOrDefault();
XNamespace ns=Entry.GetDefaultNamespace();
List images=Entry.Elements(ns+“image”).Select(x=>(string)x.ToList();
}
}
}

请尝试以下解决方案

c#

输出

IEnumerable<XElement>

<image>R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==</image>
<image>R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==</image>
<image>R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==</image>
IEnumerable
R0LGodlhaqabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa==
R0LGodlhaqabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa==
R0LGodlhaqabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa==

如果xml文档有名称空间,您能告诉我代码会有什么不同吗?我更新了代码。Perfecto:)按预期工作,非常感谢:)这在相当长的一段时间内工作正常,现在我有很大的xml文件,XDocument似乎无法处理它们。我读到的是xmlReader是要使用的。在上面的示例中,您能告诉我如何使用xmlReader而不是XDocument吗?请为此创建一个新问题。请在此处找到它
void Main()
{
    const string inputXMLFile = @"e:\Temp\Sanosi.xml";
    XDocument xdoc = XDocument.Load(inputXMLFile);
    
    var images = xdoc.Descendants("Entry")
        .Where(x => x.Element("section").Value.Equals("Section 1"))
        .Elements("image");
        
    Console.WriteLine(images);
}
IEnumerable<XElement>

<image>R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==</image>
<image>R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==</image>
<image>R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==</image>