【发布时间】:2020-12-08 06:41:47
【问题描述】:
我正在尝试合并两个 xml 文档并且不想保留重复项。让我在这里提一下,我将这两个 xml 文档放在一个字符串变量中。我正在尝试以下方式,但出现错误。我尝试使用 XmlDocument 和 XDocument 但没有成功。获取非法字符。
我也尝试过这些解决方案,但失败了。
- combine two xml_docs C# xmlDocument
- How to merge two XmlDocuments in C#
- Smart merging of two XML files
- How can I merge XML files?
- How to merge two XmlDocuments in C#
- What is the fastest way to combine two xml files into one
请帮帮我。
public class Sample
{
public static void Main()
{
var xDoc1 = string.Concat("<?xml version='1.0' encoding='utf - 8'?>",
"<Tp>" +
"<Txn-Profile>" +
"<TXN_CODE>CHD</TXN_CODE>" +
"<NO_OF_TXN>5</NO_OF_TXN>" +
"<MAX_TXN_AMOUNT>70500</MAX_TXN_AMOUNT" +
"><TOTAL_AMOUNT>80500</TOTAL_AMOUNT>" +
"<TXN_DESCUI>Cash Deposit1</TXN_DESCUI>" +
"</Txn-Profile>" +
"</Tp>");
var doc1 = XDocument.Load(xDoc1);
var xDoc2 = string.Concat("<?xml version='1.0' encoding='utf - 8'?",
"<Tp>" +
"<Txn-Profile>" +
"<TXN_CODE>CHD</TXN_CODE>" +
"<NO_OF_TXN>5</NO_OF_TXN>" +
"<MAX_TXN_AMOUNT>90000</MAX_TXN_AMOUNT>" +
"<TOTAL_AMOUNT>210000</TOTAL_AMOUNT>" +
"<TXN_DESCUI>Cash Deposit1</TXN_DESCUI>" +
"</Txn-Profile>" +
"<Txn-Profile>" +
"<TXN_CODE>DCL</TXN_CODE>" +
"<NO_OF_TXN>5</NO_OF_TXN>" +
"<MAX_TXN_AMOUNT>50000</MAX_TXN_AMOUNT>" +
"<TOTAL_AMOUNT>200000</TOTAL_AMOUNT>" +
"<TXN_DESCUI>Deposit By Instruments (Clearing)</TXN_DESCUI>" +
"</Txn-Profile>" +
"</Tp>");
var doc2 = XDocument.Load(xDoc2);
var mergeXmlDocs = doc1.Descendants("Tp").Union(doc2.Descendants("Tp"));
Console.WriteLine(mergeXmlDocs.ToString());
Console.ReadLine();
}
}
【问题讨论】:
-
重复是什么意思?是否所有值都需要相同或只有 TXN_CODE。如果 TXN_CODE 相同,那你要保留哪一个?
-
@jdweng,我整天都在等你:)。如您所见,TXN_CODE-->CHD,两个 xml 具有相同的代码,但第二个已更新。我可能会得到 n 个这样的 xml 文档,并且需要与更新的 xml 文档合并。希望你能理解。
-
欢迎来到 Stack Overflow。不幸的是,说“但出现错误”、“但没有成功”和“但失败”并不能告诉我们任何事情出了什么问题。这相当于去看医生并说“我病了”,并期待在没有检查的情况下得到诊断。请阅读codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question 并编辑您的问题以提供更多更多信息。
-
那么更新 doc2 以包含 doc1 中缺失的项目是正确的方法吗?
-
@jdweng,是的,这就是我想要的。