gpt4 book ai didi

c# - 使用 ASP.NET (C#) 解析多个 XML 文件并返回具有特定元素的文件

转载 作者:数据小太阳 更新时间:2023-10-29 02:48:00 26 4
gpt4 key购买 nike

问候。

我正在寻找一种方法来使用 ASP.NET (C#) 解析特定目录中的大量 XML 文件。我希望能够从特定元素返回内容,但在此之前,需要找到那些在元素之间具有特定值的内容。

示例 XML 文件 1:

<file>
<title>Title 1</title>
<someContent>Content</someContent>
<filter>filter</filter>
</file>

示例 XML 文件 2:

<file>
<title>Title 2</title>
<someContent>Content</someContent>
<filter>filter, different filter</filter>
</file>

案例一:

给我所有具有“filter”过滤器的 XML。

示例案例 2:

给我所有标题为“Title 1”的 XML。

看起来,这似乎可以通过 LINQ 实现,但我只看到了关于如何在有一个 XML 文件时执行此操作的示例,而不是在有多个 XML 文件时,例如在本例中。

我希望这在服务器端完成,这样我就可以在服务器端进行缓存。

可以使用任何版本的 .NET Framework 的功能。

谢谢!

~詹姆斯

最佳答案

如果您使用的是 .Net 3.5,则使用 LINQ 非常容易:

//get the files
XElement xe1 = XElement.Load(string_file_path_1);
XElement xe2 = XElement.Load(string_file_path_2);

//Give me all XML that has a filter of 'filter'.
var filter_elements1 = from p in xe1.Descendants("filter") select p;
var filter_elements2 = from p in xe2.Descendants("filter") select p;
var filter_elements = filter_elements1.Union(filter_elements2);

//Give me all XML that has a title of 'Title 1'.
var title1 = from p in xe1.Descendants("title") where p.Value.Equals("Title 1") select p;
var title2 = from p in xe2.Descendants("title") where p.Value.Equals("Title 1") select p;
var titles = title1.Union(title2);

这些都可以写成速记,总共只需 4 行就可以得到结果:

XElement xe1 = XElement.Load(string_file_path_1);
XElement xe2 = XElement.Load(string_file_path_2);
var _filter_elements = (from p1 in xe1.Descendants("filter") select p1).Union(from p2 in xe2.Descendants("filter") select p2);
var _titles = (from p1 in xe1.Descendants("title") where p1.Value.Equals("Title 1") select p1).Union(from p2 in xe2.Descendants("title") where p2.Value.Equals("Title 1") select p2);

这些都是 IEnumerable 列表,所以它们非常容易使用:

foreach (var v in filter_elements)
Response.Write("value of filter element" + v.Value + "<br />");

LINQ 规则!

关于c# - 使用 ASP.NET (C#) 解析多个 XML 文件并返回具有特定元素的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/108010/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com