【发布时间】:2019-09-24 07:02:25
【问题描述】:
我需要帮助我有两个 XML 文件,它们具有相同的 id("name") 我想了解它们之间的区别。 如果我在 Xml file_1 中有额外的节点,那么它将转到 diff。 xml 文件仅根据 id。 我已经写了一些代码,但我不知道它会怎样;我知道我们可以在 Microsoft Diff and Patch 工具中做,但我想要一个不同的代码: 这是我的代码:
public static void Main()
{
//fields
const string XML1 = @"File_1.xml";
const string XML2 = @"File_2.xml";
const string ResultFile = @"ResultFile.xml";
XmlDocument doc1 = new XmlDocument();
doc1.Load(XML1);
XmlDocument doc2 = new XmlDocument();
doc2.Load(XML2);
for(var d = 0; d < doc1.SelectNodes("root/data").Count; d++)
{
var child = doc1.SelectNodes("root/data")[d];
if (I don't know …..) {
}
}
XML fil_1
<root>
<data name="senChangePassword" xml:space="preserve">
<value>Byt lösenord</value>
<comment>Sprint 02 - Jessica</comment>
</data>
<data name="senChangesWereSuccessfullySaved" xml:space="preserve">
<value>Ändringarna är sparade</value>
<comment>Sprint 02 - Jessica</comment>
</data>
<data name="senChangeUserSettings" xml:space="preserve">
<value>Ändra uppgifter</value>
<comment>Sprint 02 - Jessica</comment>
</data>
<data name="senCompareWith" xml:space="preserve">
<value>Jämför</value>
<comment>Sprint 02 - Jessica</comment>
</data>
<data name="senCreatedQuestions" xml:space="preserve">
<value>Skapade frågor</value>
<comment>Sprint 02 - Jessica</comment>
</data>
</root>
** XML 文件_2**
<root>
<data name="senChangePassword" xml:space="preserve">
<value>Change Password</value>
<comment>Sprint 02 - Jessica</comment>
</data>
<data name="senChangesWereSuccessfullySaved" xml:space="preserve">
<value>Saved changes</value>
<comment>Sprint 02 Jessica</comment>
</data>
<data name="senCompareWith" xml:space="preserve">
<value>Compare</value>
<comment>Sprint 02 - Jessica</comment>
</data>
</root>
XML 文件_结果
<root>
<data name="senChangeUserSettings" xml:space="preserve">
<value>Ändra uppgifter</value>
<comment>Sprint 02 - Jessica</comment>
</data>
<data name="senCreatedQuestions" xml:space="preserve">
<value>Skapade frågor</value>
<comment>Sprint 02 - Jessica</comment>
</data>
</root>
【问题讨论】:
-
代码对我来说很难,它很高级,我不理解 xml.linq,我需要一个代码,只需要“使用 system.xml”。我只想比较节点 id 而不是空格或内部文本。
-
这是一个非常具有挑战性的问题。考虑投资像 DeltaXML 这样的解决方案,而不是尝试自己解决这个问题。
-
但在您的链接代码中,结果文件将是我的 xml 文件的两个文件,我不需要。您能否更改代码以获得相同的结果文件,因为我不知道 linq。
-
解决方案在 Xml Linq 中使用左外连接要简单得多。