我的项目中有一本词典
IDictionary dict<string,string>
此词典的键有xml数据(完整)。我想将所有这些合并到一个xml文件中并将其存储在另一个字典中
dict<xmldata1,null>
dict<xmldata2,null>
依旧我希望拥有
dict<xml1+xml2+....,null>
并且生成的xml应该是可解析的。
我在c#.net framework中编码
答案 0 :(得分:-1)
如果我理解正确,您正在寻找合并xml文档的方法。
这可以通过XDocument
var mergedXml = XDocument.Parse(xml1_string);
mergedXml.Root.Add(XDocument.Parse(xml2_string).Root.Elements());
以同样的方式继续你们其余的人。
最后取mergedDocument.ToString()
并将其添加为新密钥。
答案 1 :(得分:-1)
首先,我会合并XML。因此,假设所有XML共享一个公共根元素,您可以使用下一个方法来合并它们:
private XmlDocument mergeXML(XmlDocument xmlDoc1, XmlDocument xmlDoc2)
{
foreach (XmlNode node in xmlDoc2.DocumentElement.ChildNodes)
{
XmlNode imported = xmlDoc1.ImportNode(node, true);
xmlDoc1.DocumentElement.AppendChild(imported);
}
return xmlDoc1;
}
然后,您可以使用OutterXML属性获取结果XML的字符串内容,如下所示:
XmlDocument xmlDoc1 = new XmlDocument();
XmlDocument xmlDoc2 = new XmlDocument();
xmlDoc1.LoadXml("<?xml version='1.0'?><field><subfield1>hi</subfield1></field>");
xmlDoc2.LoadXml("<?xml version='1.0'?><field><subfield2>hello</subfield2></field>");
XmlDocument mergedXML = mergeXML(xmlDoc1, xmlDoc2);
Dictionary<string, string> XMLDictionary = new Dictionary<string, string> {
{mergedXML.OuterXml, "whatever" }
};
当然,结果字符串可再次解析为XMLDocument,您可以使用linQ检查它以访问密钥:
XmlDocument resultXML = new XmlDocument();
resultXML.LoadXml(XMLDictionary.Keys.ElementAt(0));
答案 2 :(得分:-1)
使用xml linq:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
IDictionary<string,string> dict = new Dictionary<string,string>() {
{"subfield", "hi"},
{"subfield2", "Hello"}
};
string header = "<?xml version=\"1.0\"?><field></field>";
XDocument doc = XDocument.Parse(header);
XElement field = (XElement)doc.FirstNode;
foreach(string key in dict.Keys)
{
field.Add(new XElement(key, dict[key]));
}
}
}
}