作者:手机用户2702936044 | 来源:互联网 | 2023-05-23 19:26
我正在寻找一种简洁的方法来反序列化XmlDocument
对象.我发现最接近的是这个,但我真的很想知道是否有更好的方法(在.NET 4.5甚至4.6),因为我已经有了XmlDocument.
所以目前看起来如下:
// aciResponse.Data is a XmlDocument
MyClass response;
using (XmlReader reader = XmlReader.Create((new StringReader(aciResponse.Data.InnerXml))))
{
var serializer = new XmlSerializer(typeof(MyClass));
respOnse= (MyClass)serializer.Deserialize(reader);
}
谢谢你有更好的主意!
1> SwDevMan81..:
您可以放弃XmlReader
并使用TextReader
替代并使用TextReader
XmlSerializer.Deserialize Method
重载.
工作范例:
void Main()
{
String aciRespOnseData= "test";
using(TextReader sr = new StringReader(aciResponseData))
{
var serializer = new System.Xml.Serialization.XmlSerializer(typeof(MyClass));
MyClass respOnse= (MyClass)serializer.Deserialize(sr);
Console.WriteLine(response.bar);
}
}
[System.Xml.Serialization.XmlRoot("tag")]
public class MyClass
{
public String bar;
}
2> 小智..:
如果您已经拥有一个XmlDocument
可以使用的对象XmlNodeReader
MyClass respOnse= null;
XmlSerializer serializer = new XmlSerializer(typeof(MyClass));
using (XmlReader reader = new XmlNodeReader(aciResponse.Data))
{
respOnse= (MyClass)serializer.Deserialize(reader);
}
3> 小智..:
有一种更好,更懒惰的方法来做到这一点.但只有在使用Visual Studio时才有可能.
脚步:
打开Visual Studio并创建一个新的类文件(比如Sample1.cs).现在从此类文件中删除示例类定义.
将XML文件复制到剪贴板(Ctrl + A,Ctrl + C)
在Visual Studio中,转到"编辑"菜单并选择"选择性粘贴" - >"将XML粘贴为类".
完成.Visual Studio将生成反序列化此XML所需的所有类定义.