XML文档转换

时间:2013-01-11 17:27:09

标签: c# xml

我是一名中级c#程序员,需要XML文档的帮助。

我需要做以下事情:

  1. 解析相当大的XML文档A
  2. 提取特定元素和值
  3. 将这些值存储在新的XML文档B中(元素名称将不同)
  4. XML文档B元素将具有不同的名称,但从文档A中提取相同的值。

    有人可以帮助实现最佳设计吗?

    我应该使用数据合同/序列化,我应该使用枚举来存储XML元素..........

    请概述一下实现上述目标的最佳方法或直接向我介绍

4 个答案:

答案 0 :(得分:2)

如果您要阅读XML,然后基于此创建XML,那么您可能需要考虑使用XSLT。这是一种使用XQuery和XPath将XML文档转换为新的XML文档的方法。如果您将来使用XML做这类事情,那么值得学习。

以下是代码项目教程的链接: http://www.codeproject.com/Articles/460968/XSLT-2-0-programming-basics

答案 1 :(得分:1)

我建议LINQ to XML

如果您只是将一个XML文档翻译成另一个,那么您也可以考虑编写一个XSLT来进行翻译。

答案 2 :(得分:0)

我通常使用XmlDocument类和XPath

some xpath examples are here

这是一个放置XML文档,从一个文档中获取值并将它们放在另一个文档中的示例。

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);

答案 3 :(得分:0)

一些伪代码和信息。我不能具体,因为你没有提供任何信息。

1 - 使用Xml A加载XmlDocument

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);

非常基本,根本不具体,但我能提出你当前的问题。