在给定由文件名组成的字符串列表的情况下,我想将多个XML文件读取并反序列化为XML类结构。 显然,在读取一个xml文件时,您可以像这样进行操作:
XmlRoot file = null;
XmlSerializer ser = new XmlSerializer(typeof(XmlRoot));
using (XmlReader read = XmlReader.Create(FileName))
{
file = (XmlRoot)ser.Deserialize(read);
{
哪个会将XML文件反序列化为类结构?
不可能有一个带有文件名的列表,并使用foreach循环对其进行遍历,逐个读取和反序列化,因为从理论上讲,它将导致在类结构中读取,反序列化和复制多个根元素。
因此,一般而言,我想反序列化每个文件,并将所需的主元素附加到根对象。
有人知道如何做到这一点吗?会很有帮助的。
谢谢!
PS:不好意思,因为我不是母语人士。如果您需要更多信息,请告诉我!
答案 0 :(得分:0)
我设法自己解决了这个问题。 首先,我为读取的第一个文件创建了一个XDocument,然后遍历其他文档,为每个xml文件创建了一个新的XDocument,并尝试获取根之后的元素(以我的情况为Language)并将其添加到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);
然后,我调用Deserialize方法,像这样反序列化我创建的XDocument:
public static XmlLanguage Deserialize(XDocument doc)
{
XmlSerializer ser = new XmlSerializer(typeof(XmlLanguage));
return (XmlLanguage)ser.Deserialize(doc.CreateReader());
}