我正在使用一個類庫,它代表了它在.xml中的一些配置。使用XmlSerializer
讀取配置。幸運的是,表示.xml的類使用XmlAnyElement
屬性,在該屬性下允許我爲自己的目的擴展配置數據,而無需修改原始類庫。如何從調用XmlSerializer.Serialize創建XmlNode?
<?xml version="1.0" encoding="utf-8"?>
<Config>
<data>This is some data</data>
<MyConfig>
<data>This is my data</data>
</MyConfig>
</Config>
這對於反序列化很有效。我可以允許類庫像往常一樣反序列化.xml,我可以使用我自己的XmlSerializer
實例與XmlNodeReader
對內部XmlNode
。
public class Config
{
[XmlElement]
public string data;
[XmlAnyElement]
public XmlNode element;
}
public class MyConfig
{
[XmlElement]
public string data;
}
class Program
{
static void Main(string[] args)
{
using (Stream fs = new FileStream(@"c:\temp\xmltest.xml", FileMode.Open))
{
XmlSerializer xser1 = new XmlSerializer(typeof(Config));
Config config = (Config)xser1.Deserialize(fs);
if (config.element != null)
{
XmlSerializer xser2 = new XmlSerializer(typeof(MyConfig));
MyConfig myConfig = (MyConfig)xser2.Deserialize(new XmlNodeReader(config.element));
}
}
}
我需要創建一個工具,它允許用戶生成包括類庫配置以及我自己的配置,所以新的對象將被創建,並沒有從讀取新的配置文件。 xml文件。問題是如何將數據序列化回.xml?
我意識到在調用類庫配置中的相同方法之前,我必須首先在我的數據上調用XmlSerializer.Serialize
。但是,這要求在撥打Serialize
之後,我的數據由XmlNode
表示。使用XmlSerializer
將對象序列化爲XmlNode
的最佳方法是什麼?
感謝,
-kevin
btw--它看起來像由克里斯·洛維特寫的XmlNodeWriter
類是可從微軟有一段時間,但現在的鏈路斷開。有沒有人知道一個替代地點獲得這個類?
`doc.DocumentElement `返回所需的`XmlNode`。 – tm1 2015-05-20 09:14:38