如何使用 LINQ 读取包含 xincluded 文件的 XML?

发布于 2024-08-22 07:27:28 字数 983 浏览 12 评论 0原文

我目前正在使用 VS2008、C# 3.5 和 LINQ 来读取 XML 文件。 (称之为 A.xml)我想使用 xinclude 将其他 XML 文件包含在 A.xml 中。我最初的尝试失败了,并且我没有找到任何关于这两者如何协同工作的现有信息。

我通过调用 XElement.Load() 创建查询的根元素 是否有其他方法来创建将处理 include 语句的根元素?

示例:
文件 A.xml

<A>  
  <xi:include href="B.xml" xmlns:xi="http://www.w3.org/2003/XInclude"/>  
</A>

文件 B.xml

<B>  
  <TAG_B Name="foo">  
    <TAG_C attr="bar"/>
  </TAG_B>  
</B>

C# 代码:

 XElement root = XElement.Load(@"A.xml");
 var b = from TAG_B in root.Descendants("B")
         let name = (string)TAG_B.Attribute("Name")
         where name.Equals("foo")
         select TAG_B;

我希望 XElement.Load 将包含 B.xml 的内容并生成以下内容:

<A> 
  <B>  
    <TAG_B Name="foo">  
      <TAG_C attr="bar"/>
    </TAG_B>  
  </B>
</A>

不幸的是,包含元素未处理,因此可枚举中没有 TAG_B 元素。

I am currently using VS2008, C# 3.5, and LINQ to read an XML file. (call it A.xml) I want to include other XML files in A.xml with xinclude. My initial attempts have failed, and I've not found any existing info published on how these two work together.

I'm creating the root element of my query by calling XElement.Load()
Is there some other way of creating the root element that will process the include statement?

Example:
File A.xml

<A>  
  <xi:include href="B.xml" xmlns:xi="http://www.w3.org/2003/XInclude"/>  
</A>

File B.xml

<B>  
  <TAG_B Name="foo">  
    <TAG_C attr="bar"/>
  </TAG_B>  
</B>

C# code:

 XElement root = XElement.Load(@"A.xml");
 var b = from TAG_B in root.Descendants("B")
         let name = (string)TAG_B.Attribute("Name")
         where name.Equals("foo")
         select TAG_B;

I was hoping that XElement.Load would include the contents of B.xml and produce the following:

<A> 
  <B>  
    <TAG_B Name="foo">  
      <TAG_C attr="bar"/>
    </TAG_B>  
  </B>
</A>

Unfortunately, the include element is not processed, so there are no TAG_B elements in the enumarable.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

合久必婚 2024-08-29 07:27:28

LINQ 和.Net 框架不支持XInclude。 SourceForge 上有一个免费项目,它为 .Net 实现了 XInclude,但我没有认为它支持LINQ。

LINQ and the .Net framework do not support XInclude. There is a free project at SourceForge that implements XInclude for .Net, but I don't think it supports LINQ.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文