[英]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.