我是中级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