我是中級c#程序員,需要關於XML文檔的幫助。XML文檔轉換
我需要做到以下幾點:
- 解析一個相當大的XML文檔
- 提取特定的元素和值
- 存儲在一個新的XML文檔B這些值(元素名稱將是不同)
XML文檔B的元件將具有不同的名稱,但從文獻A.提取相同的值
有人可以幫助最佳設計來實現這一目標嗎?
我應該使用數據契約/序列化,我應該使用枚舉來存儲XML元素.........。
請給我送行的最好方法的概述,以實現上述或直接我一個例子
我是中級c#程序員,需要關於XML文檔的幫助。XML文檔轉換
我需要做到以下幾點:
XML文檔B的元件將具有不同的名稱,但從文獻A.提取相同的值
有人可以幫助最佳設計來實現這一目標嗎?
我應該使用數據契約/序列化,我應該使用枚舉來存儲XML元素.........。
請給我送行的最好方法的概述,以實現上述或直接我一個例子
我會建議LINQ to XML
如果嚴格只是翻譯一個XML文檔到另一個,您可能還看看寫一個XSLT來做翻譯。
我通常使用XmlDocument
類和XPath
下面是使用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);
一些僞代碼和信息。由於您沒有提供任何信息,因此我無法具體說明。
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問題。
如果您打算閱讀XML,然後根據此創建XML,那麼您可能需要考慮使用XSLT。這是一種使用XQuery和XPath將XML文檔轉換爲新的XML文檔的方法。如果你將來要用XML來做這類事情,那麼值得學習。
這裏的代碼項目鏈接到一個教程: http://www.codeproject.com/Articles/460968/XSLT-2-0-programming-basics
是否必須是一個服務?如果不是,請不要打擾數據合同。 System.XML將使這一點變得輕而易舉。 –
[你有什麼嘗試](http://whathaveyoutried.com)? XML操作是非常常見的,.NET有很多關於它們的資源。 – Oded
它不一定是服務。 – user1526912