如何反规范化 xml 文件?
How to denormalize xml file?
我有 3 个 XML 文件属于同一个系列,如下所述:
Aplha_a.xml
<root>
<date>24-july-2017</date>
<ID>001</ID>
<data>a</data>
<reg_date>24-july-2017</reg_date>
</root>
Aplha_b.xml
<root>
<date>24-july-2017</date>
<ID>001</ID>
<data>b</data>
<reg_date>24-july-2017</reg_date>
</root>
Aplha_c.xml
<root>
<date>24-july-2017</date>
<ID>001</ID>
<data>c</data>
<reg_date>24-july-2017</reg_date>
</root>
3 个不同的 XML 文件现在组织成单个 XML 文件,如下所述:
<Alpha_family>
<root>
<date>24-july-2017</date>
<ID>001</ID>
<data>a</data>
<reg_date>24-july-2017</reg_date>
</root>
<root>
<date>24-july-2017</date>
<ID>001</ID>
<data>b</data>
<reg_date>24-july-2017</reg_date>
</root>
<root>
<date>24-july-2017</date>
<ID>001</ID>
<data>c</data>
<reg_date>24-july-2017</reg_date>
</root>
</Alpha_family>
我需要通过仅返回不同节点将 3 XML 文件反规范化为单个 XML 系列元素。
<Alpha_family>
<date>24-july-2017</date>
<ID>001</ID>
<data>a b c</data>
<reg_date>24-july-2017</reg_date>
</Alpha_family>
谁能帮忙解决这个问题。
提前致谢。
所以不太清楚您希望如何组成新的 "denormalized" 节点,但是根据给出的示例输出,我假设您想要连接所有不同的值并用空格。
以下内容应该可以完成这项工作:
for $family in /Alpha_family
return element { $family/local-name() } {
for $e in distinct-values($family/*/*/local-name())
return element { $e } { distinct-values($family/*/*[local-name() = $e])}
}
它首先获取所有不同的元素名称,然后连接这些元素的不同值。
我有 3 个 XML 文件属于同一个系列,如下所述:
Aplha_a.xml
<root>
<date>24-july-2017</date>
<ID>001</ID>
<data>a</data>
<reg_date>24-july-2017</reg_date>
</root>
Aplha_b.xml
<root>
<date>24-july-2017</date>
<ID>001</ID>
<data>b</data>
<reg_date>24-july-2017</reg_date>
</root>
Aplha_c.xml
<root>
<date>24-july-2017</date>
<ID>001</ID>
<data>c</data>
<reg_date>24-july-2017</reg_date>
</root>
3 个不同的 XML 文件现在组织成单个 XML 文件,如下所述:
<Alpha_family>
<root>
<date>24-july-2017</date>
<ID>001</ID>
<data>a</data>
<reg_date>24-july-2017</reg_date>
</root>
<root>
<date>24-july-2017</date>
<ID>001</ID>
<data>b</data>
<reg_date>24-july-2017</reg_date>
</root>
<root>
<date>24-july-2017</date>
<ID>001</ID>
<data>c</data>
<reg_date>24-july-2017</reg_date>
</root>
</Alpha_family>
我需要通过仅返回不同节点将 3 XML 文件反规范化为单个 XML 系列元素。
<Alpha_family>
<date>24-july-2017</date>
<ID>001</ID>
<data>a b c</data>
<reg_date>24-july-2017</reg_date>
</Alpha_family>
谁能帮忙解决这个问题。
提前致谢。
所以不太清楚您希望如何组成新的 "denormalized" 节点,但是根据给出的示例输出,我假设您想要连接所有不同的值并用空格。
以下内容应该可以完成这项工作:
for $family in /Alpha_family
return element { $family/local-name() } {
for $e in distinct-values($family/*/*/local-name())
return element { $e } { distinct-values($family/*/*[local-name() = $e])}
}
它首先获取所有不同的元素名称,然后连接这些元素的不同值。