C# 将多个XML文件读入XML类结构
我希望在给定由文件名组成的字符串列表的情况下,将多个XML文件读取并反序列化到我的XML类结构中。 显然,在读取一个xml文件时,您可以这样做:C# 将多个XML文件读入XML类结构,c#,xml,serialization,C#,Xml,Serialization,我希望在给定由文件名组成的字符串列表的情况下,将多个XML文件读取并反序列化到我的XML类结构中。 显然,在读取一个xml文件时,您可以这样做: XmlRoot file = null; XmlSerializer ser = new XmlSerializer(typeof(XmlRoot)); using (XmlReader read = XmlReader.Create(FileName)) { file = (XmlRoot)ser.Deserialize(read); {
XmlRoot file = null;
XmlSerializer ser = new XmlSerializer(typeof(XmlRoot));
using (XmlReader read = XmlReader.Create(FileName))
{
file = (XmlRoot)ser.Deserialize(read);
{
public static XmlLanguage Deserialize(XDocument doc)
{
XmlSerializer ser = new XmlSerializer(typeof(XmlLanguage));
return (XmlLanguage)ser.Deserialize(doc.CreateReader());
}
哪个将把XML文件反序列化到类结构中
不可能有一个包含文件名的列表,并使用foreach循环对其进行迭代、逐个读取和反序列化,因为理论上这会导致在类结构中读取、反序列化和复制多个根元素
因此,一般来说,我希望反序列化每个文件,并将所需的主元素附加到根对象
有人知道如何做到这一点吗?这会有很大的帮助
提前谢谢
请原谅我的英语,因为我不是以英语为母语的人。如果你需要更多的信息,就告诉我 我设法自己解决了这个问题。 首先,我为我读取的第一个文件创建了一个XDocument,然后我遍历了其他文档,为每个xml文件创建了一个新的XDocument,并尝试获取根(在我的例子中是语言)之后的元素,并将其添加到在循环外部创建的XDocument的根中
XDocument lDoc = new XDocument();
int counter = 0;
foreach (var fileName in multipleFileNames)
{
try
{
counter++;
if (lCounter <= 1)
{
doc = XDocument.Load(fileName);
}
else
{
XDocument doc2 = XDocument.Load(fileName);
IEnumerable<XElement> elements = doc2.Element("Language")
.Elements();
doc.Root.Add(elements);
}
}
return Deserialize(lDoc);
是否要将多个xml文件反序列化为单个对象?你为什么需要这个?通常一个xml正好匹配xml根元素的一个对象。你能举一个你想要实现的例子吗?因为xml文件包含我们的本地化语言信息,它们被分成多个较小的文件。因此,我们仍然可以将它们作为一个文件一起导出。我想不起有什么可以这样做的。你得找个地方合并。。从所有文件中创建一个xml负载,然后反序列化该负载,或者对每个文件执行反序列化,并将所需元素附加到主根对象。@Wheels73这正是我所想的,如果我提供的文本不清楚,很抱歉。@joshi422-没问题。尝试使用LINQXML。我发现浏览文档、提取和附加节点更容易。