将多个文件合并为一个XML文件的最佳方法?

时间:2014-12-05 01:44:09

标签: c# xml xslt xpath xquery

根据特定架构,我有一组我希望能够合并为单个XML的文件。

我正在考虑使用带有自定义XmlResolver(C#/ .NET)的XSLT,尽管我不确定这是否能让我对XPath表达式如何进行足够的控制解析XSLT以便能够将某些表达式定向到某些文件。

要合并的文件将是XML片段。通常,整个片段将被合并到XML目标中,尽管可以选择仅合并某些字段。

示例:

从三个片段文件开始:

one.txt: contains <One>Number One</One> [or maybe just "Number One"]
two.txt: contains <Two>Number Two</Two> [or "Number Two"]
three.txt: contains <Three>Number Three</Three> [or "Number Three"]

我想将one.txt和two.txt组合成以下内容,同时忽略three.txt:

<Numbers>
  <One>Number One</One>
  <Two>Number Two</Two>
</Numbers>

我正在寻找描述性方法,而不是自定义代码,因为可能存在许多不同的片段和许多不同的组合。

我知道下面的代码不会起作用,但是这样的话:

<Numbers>
    <xsl:value-of select="mine:one.txt/One" />
    <xsl:value-of select="mine:two.txt/Two" />
</Numbers>

XML片段可能很复杂,因此简单的文件合并是不够的。我可能想要某种形式的XPath / XQuery来提取相关的部分。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

有什么问题
<Numbers>
    <xsl:copy-of select="doc('mine:one.txt')/One" />
    <xsl:copy-of select="doc('mine:two.txt')/Two" />
</Numbers>

我不认为你已经解释了为什么你认为你可能需要一个自定义的XmlResolver,但如果你这样做,那就没问题了