我实际上正在计划从SQL数据库中合并xml数据的最佳方法。
我有一个包含xml数据类型的表。里面是xml的类似模式。我想合并,比方说两个xmls,两端都包含一个<Custom></Custom>
根。
这样做的最佳方式是什么?
第一个xml:
<Custom>
<Data1>
<ID>23423</ID>
<Row1>value</Row1>
</Data1>
<Data1>
<ID>57568</ID>
<Row1>value</Row1>
</Data1>
<Data1>
<ID>56756</ID>
<Row1>value</Row1>
</Data1>
</Custom>
第二个xml:
<Custom>
<Data1>
<ID>6575</ID>
<Row1>value</Row1>
</Data1>
<Data1>
<ID>8345</ID>
<Row1>value</Row1>
</Data1>
<Data1>
<ID>5666</ID>
<Row1>value</Row1>
</Data1>
</Custom>
请不要介意ID,实际数据在GUID中,因此合并不会那么困难。
答案 0 :(得分:1)
听起来你说我有两个xml数据集具有相同的根节点,但没有其他(可能)共同点?
所以如果你想让一个系统比较它们之间的差异,我会看看.net和开源软件的可用性。这是以前想到的。
合并是一件非常复杂的事情。如果双方都有不同的价值观,你如何决定“合并”谁?它并不像你想象的那么简单。底线是。你需要更详细地解释你的确切场景以获得真实的反应,但缺乏这一点,我建议你定义你想要做什么...合并用户干预/没有/有时/更明确的问题描述,你会得到更好的结果。
答案 1 :(得分:0)
以下是关于我如何做的事情:
DECLARE @First XML
SET @First = '<Custom>
<Data1>
<ID>23423</ID>
<Row1>value</Row1>
</Data1>
<Data1>
<ID>57568</ID>
<Row1>value</Row1>
</Data1>
<Data1>
<ID>56756</ID>
<Row1>value</Row1>
</Data1>
</Custom>'
DECLARE @Second XML
SET @Second = '<Custom>
<Data1>
<ID>6575</ID>
<Row1>value</Row1>
</Data1>
<Data1>
<ID>8345</ID>
<Row1>value</Row1>
</Data1>
<Data1>
<ID>5666</ID>
<Row1>value</Row1>
</Data1>
</Custom>'
SET @First = (SELECT @First.query('/Custom/*'))
SET @Second = (SELECT @Second.query('/Custom/*'))
DECLARE @Merged XML
SET @Merged = (SELECT @First, @Second FOR XML RAW ('Custom'), ELEMENTS)
SELECT @Merged