[英]Merge two XML Documents in C#
我正在尝试合并两个 xml 文档并且不想保留重复项。 让我在这里提一下,我将这两个 xml 文档放在一个字符串变量中。 我正在尝试以下方式,但出现错误。 我尝试使用 XmlDocument 和 XDocument 但没有成功。 获取非法字符。
我也尝试过这些解决方案,但失败了。
请帮助我。
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();
}
}
尝试以下操作:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication176
{
class Program
{
static void Main(string[] args)
{
string xDoc1 = "<?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.Parse (xDoc1);
string xDoc2 = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" +
"<Tp>" +
"<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>";
XDocument doc2 = XDocument.Parse(xDoc2);
List<string> txnCodes2 = doc2.Descendants("TXN_CODE").Select(x => (string)x).ToList();
XElement txn2 = doc2.Descendants("Txn-Profile").FirstOrDefault();
foreach (XElement txnProfilet in doc1.Descendants("Txn-Profile"))
{
string txnCode1 = (string)txnProfilet.Descendants("TXN_CODE").FirstOrDefault();
if (!txnCodes2.Contains(txnCode1))
{
txn2.Add(txnProfilet);
}
}
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.