2012-01-20 78 views
0

我想合併2個XML文件,並查看了此網站上的類似案例,但找不到解決方案。從項目級別合併2個XML文件並向下合併

基本上,2個XML文件具有相同的結構,但來自2個來源,我想將它們合併成一個XML文件並保存到本地。 我試圖實現的是: 從文件2和文件1中刪除標題部分,並創建一個具有相同結構但具有自定義信息的新部分。 只是該項目的部分(及其子項)添加到合併後的文件 並能夠使該項目降序排序 上pubdate的結果來進行排序,然後將文件保存在本地 和所有與C#

爲了說明

FILE 1:

<?xml version="1.0" encoding="UTF-8"?> 
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"> 
    <channel> 
    <title>File 1</title> 
    <link>http://www.somewhere.com/</link> 
    <description>Feed from the source</description> 
    <image> 
     <title>My image</title> 
     <link>http://www.somewhere.com/</link> 
     <url>http://www.somewhere.com/images/redesign/graphics/logos/logo-small.png</url> 
     <width>128</width> 
     <height>23</height> 
    </image> 
    <language> 
    </language> 
    <ttl>15</ttl> 
    <item> 
     <title>Article 1</title> 
     <pubDate>Fri, 09 Dec 2011 13:24:27 +0100</pubDate> 
     <description>Description here</description> 
     <guid>http://www.somewhere.com/pressroom/article1</guid> 
     <link>http://www.somewhere.com/pressroom/article1</link> 
     <dc:creator>Someone</dc:creator> 
    </item> 
    </channel> 
</rss> 

FILE 2:

<?xml version="1.0" encoding="UTF-8"?> 
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"> 
    <channel> 
    <title>File 2</title> 
    <link>http://www.somewhere2.com/</link> 
    <description>Feed from the other source</description> 
    <image> 
     <title>My image</title> 
     <link>http://www.somewhere2.com/</link> 
     <url>http://www.somewhere2.com/images/redesign/graphics/logos/logo-small.png</url> 
     <width>128</width> 
     <height>23</height> 
    </image> 
    <language> 
    </language> 
    <ttl>15</ttl> 
    <item> 
     <title>Article 2</title> 
     <pubDate>Fri, 11 Dec 2011 13:27:27 +0100</pubDate> 
     <description>Description here</description> 
     <guid>http://www.somewhere2.com/pressroom/article2</guid> 
     <link>http://www.somewhere2.com/pressroom/article2</link> 
     <dc:creator>Someone else</dc:creator> 
    </item> 
    </channel> 
</rss> 

結果文件:

<?xml version="1.0" encoding="UTF-8"?> 
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"> 
    <channel> 
    <title>Merged File</title> 
    <link>http://www.somewhere3.com/</link> 
    <description>Feed from the merged source</description> 
    <image> 
     <title>My image</title> 
     <link>http://www.somewhere3.com/</link> 
     <url>http://www.somewhere3.com/images/redesign/graphics/logos/logo-small.png</url> 
     <width>128</width> 
     <height>23</height> 
    </image> 
    <language> 
    </language> 
    <ttl>15</ttl> 
    <item> 
     <title>Article 2</title> 
     <pubDate>Fri, 11 Dec 2011 13:27:27 +0100</pubDate> 
     <description>Description here</description> 
     <guid>http://www.somewhere2.com/pressroom/article2</guid> 
     <link>http://www.somewhere2.com/pressroom/article2</link> 
     <dc:creator>Someone else</dc:creator> 
    </item> 
    <item> 
     <title>Article 1</title> 
     <pubDate>Fri, 09 Dec 2011 13:24:27 +0100</pubDate> 
     <description>Description here</description> 
     <guid>http://www.somewhere.com/pressroom/article1</guid> 
     <link>http://www.somewhere.com/pressroom/article1</link> 
     <dc:creator>Someone</dc:creator> 
    </item> 
    </channel> 
</rss> 
+0

你的問題很不清楚。在合併中應該優先考慮什麼? 'somewhere3.com'如何獲得?需要更多信息。 –

+0

'somewhere3.com'和合並頭中的其他值是作爲一個靜態值獲得的,即它總是相同的,並通過c#代碼(我假設?)獲得,因此不是來自文件1或文件2。始終保持不變。 – lars

+0

你是什麼意思「應該優先考慮」?我不明白。結果文件顯示了我希望它的樣子。並且已合併的文件具有由pubDate排序後裔的項目元素。這是否回答你的問題?謝謝你的幫助。 – lars

回答

1

只需建立一個基於XML結構的類和使用序列化到這兩個文件加載到目標,然後從一個文件中採取項目列表,並將它們添加到對方,然後序列化回XML。至於排序,你將不得不改變我相信的Item類的比較方法,不確定以前沒有做過。