簡體   English   中英

使用不同的XmlRoot元素名稱反序列化XML文件

[英]De-serialize XML files with varying XmlRoot element names

我有大量的XML文件需要執行反序列化。 這些文件具有不同的根名稱(超過250個)。 我正在嘗試在訪問XML類以檢索我的數據之前通過XmlSerializer傳遞根屬性名稱。 這是我所擁有的,但我仍然得到一個錯誤,根據名稱是預期的,盡管XmlElement類將屬性傳遞給XmlSerializer類。

用於檢索文件的方法:

string strXmlDoc = path;
XmlDocument objXmlDoc = new XmlDocument();
objXmlDoc.Load(strXmlDoc);
XmlElement objRootElem = objXmlDoc.DocumentElement;

XmlSerializer xmlSerial = new XmlSerializer(typeof(XMLFile), new XmlRootAttribute(objRootElem.ToString()));
StreamReader sr = new StreamReader(path);
XMLFile entity = xmlSerial.Deserialize(sr) as XMLFile;

XML類文件:

[Serializable]
//[XmlRoot("randomname")] Removed this line since I'm getting the XmlRoot attribute in the XmlSerializer line.
public class XMLFile
{
    [System.Xml.Serialization.XmlElement("RECORD")]
    public RECORD RECORD { get; set; }
}

[Serializable]
public class RECORD
{
    [XmlElement("BK01")]
    public Record Bk01 { get; set; }

    [XmlElement("BK02")]
    public Record Bk02 { get; set; }
}

[Serializable]
public class Record
{
    [XmlAttribute("Value")]
    public string Value { get; set; }
}

改變這個:

XmlSerializer xmlSerial = 
    new XmlSerializer(typeof(XMLFile), new XmlRootAttribute(objRootElem.ToString()));

對此:

XmlSerializer xmlSerial = 
    new XmlSerializer(typeof(XMLFile), new XmlRootAttribute(objRootElem.Name));
                                                                        ^^^

XmlElement.ToString()將始終返回System.Xml.XmlElement ,這不是您想要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM