-1

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

我需要执行以下操作:

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

XML 文档 B 元素将具有不同的名称,但从文档 A 中提取的值相同。

有人可以帮助实现这一目标的最佳设计吗?

我应该使用数据协定/序列化,我应该使用枚举来存储 XML 元素…………。

请概述实现上述目标的最佳方法或将我引导至示例

4

4 回答 4

2

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

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

于 2013-01-11T18:30:38.570 回答
1

我会推荐LINQ to XML

如果您只是严格地将一个 XML 文档翻译成另一个,您可能还会考虑编写一个 XSLT 来进行翻译。

于 2013-01-11T17:34:18.820 回答
0

我通常使用XmlDocument类和 XPath

一些 xpath 示例在这里

这是一个使用 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);
于 2013-01-11T17:34:52.937 回答
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);

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

于 2013-01-11T17:40:38.413 回答