.net,C#
是否可以(通过使用属性等)自动保存在反序列化该对象时序列化对象时创建的整个XML字符串(作为字符串字段)?
我问,因为我从Web服务接收XML存根,该存根包含可用于验证XML的数字签名。我可以将XML反序列化为一个有用的对象,可以传递到我的应用程序层进行验证,但我也需要XML。理想情况下,我的新对象将具有OriginalXML属性或其他内容。我可以在更高级别验证XML,但对我来说不太方便。
干杯,
克里斯。
答案 0 :(得分:0)
您可以将XML文件加载到字符串中,没问题。但是,必须使用[NonSerialized]
属性标记OriginalXML属性,因为您不希望在序列化时存储该字符串。您必须反序列化,重新加载为XmlDocument
,并将结果字符串存储到该属性。
XmlDocument xmlDoc = new XmlDocument();
try {
xmlDoc.Load(serializedFile);
}
catch (XmlException exc) {
// Handle the error
}
StringWriter stringWriter = new StringWriter();
XmlTextWriter xmlWriter= new XmlTextWriter(stringWriter);
xmlDoc.WriteTo(xmlWriter);
myObject.OriginalXML = xmlWriter.ToString();
HTH,
詹姆斯
答案 1 :(得分:0)
怎么样
[DataContract]
class FooBar
{
//this property doesn't have the DataMember attribure
//and thus won't be serialized
public string OriginalXml { get; set; }
[DataMember] private int _foo;
[DataMember] private string _bar;
static public FooBar Deserialize(XmlReader reader)
{
var fooBar =
(FooBar)new DataContractSerializer(typeof(FooBar)).ReadObject(reader);
fooBar.OriginalXml = reader.ToString();
return fooBar;
}
}