2013-01-11 141 views
-1

我是中級c#程序員,需要關於XML文檔的幫助。XML文檔轉換

我需要做到以下幾點:

  1. 解析一個相當大的XML文檔
  2. 提取特定的元素和值
  3. 存儲在一個新的XML文檔B這些值(元素名稱將是不同)

XML文檔B的元件將具有不同的名稱,但從文獻A.提取相同的值

有人可以幫助最佳設計來實現這一目標嗎?

我應該使用數據契約/序列化,我應該使用枚舉來存儲XML元素.........。

請給我送行的最好方法的概述,以實現上述或直接我一個例子

+0

是否必須是一個服務?如果不是,請不要打擾數據合同。 System.XML將使這一點變得輕而易舉。 –

+2

[你有什麼嘗試](http://whathaveyoutried.com)? XML操作是非常常見的,.NET有很多關於它們的資源。 – Oded

+0

它不一定是服務。 – user1526912

回答

1

我會建議LINQ to XML

如果嚴格只是翻譯一個XML文檔到另一個,您可能還看看寫一個XSLT來做翻譯。

0

我通常使用XmlDocument類和XPath

some xpath examples are here

下面是使用XML文檔各地putzing,從一個文檔獲取值,並把它們放在另一個的例子。

XmlDocument xDoc = new XmlDocument(); 
xDoc.Load("filename.xml"); 

string val = xDoc.SelectSingleNode("//ElementName").Attributes["attributeName"].Value; 

XmlDocument xDoc2 = new XmlDocument(); 
XmlElement ele = xDoc2.CreateElement("ElementName2"); 
XmlAttribute att = xDoc2.CreateAttribute("attributeName2"); 
att.Value = val; 
ele.Attributes.Append(att); 
xDoc2.AppendChild(ele); 
0

一些僞代碼和信息。由於您沒有提供任何信息,因此我無法具體說明。

1 - 使用XmlDocument加載您的Xml A

var aDoc = new XmlDocument(); 
aDoc.Load("someFile.xml"); 

2 - 既然你說你願意,你可以使用xPath提取該節點的特定節點。 (該XPath是隻是一個例子)

XmlNode extractedNode = aDoc.SelectSingleNode(/rootNode/parentNode); 

3 - 現在你有中提取的時間您的節點把它放在一個新的文件bDoc(加載酷似aDoc)。

XmlNode rootNode = bDoc.DocumentElement; 
rootNode.AppendChild(extractedNode); 

非常基本,根本不具體,但所有我可以拿出您的ccurrent問題。