2013-01-11 142 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问题。