gpt4 book ai didi

Azure表存储: Xml serialization for TableContinuationToken

转载 作者:行者123 更新时间:2023-12-04 04:34:33 31 4
gpt4 key购买 nike

我正在使用 Microsoft.WindowsAzure.Storage v2.1.0.3。

尝试将 TableContinuationToken 序列化为 XML。

序列化代码为:

String tokenXml;
var serializer = new XmlSerializer(typeof(TableContinuationToken));
using (var writer = new StringWriter())
{
var writerSettings = new XmlWriterSettings { OmitXmlDeclaration = true, NewLineChars = String.Empty };
using (var xmlWriter = XmlWriter.Create(writer, writerSettings))
{
serializer.Serialize(xmlWriter, token);
}
tokenXml = writer.ToString();
}

反序列化代码为:

TableContinuationToken token; 
var serializer = new XmlSerializer(typeof(TableContinuationToken));
using (var stringReader = new StringReader(tokenXml))
{
token = (TableContinuationToken)serializer.Deserialize(stringReader);
}

非常简单。但是当我尝试反序列化 token 时,发生以下异常:

System.InvalidOperationException : There is an error in XML document (1, 26).
----> System.Xml.XmlException : Unexpected Element 'ContinuationToken'

从序列化 token 中删除标签后,代码工作正常!

可能是 Microsoft.WindowsAzure.Storage v2.1.0.3 中的 BUG?还是我做错了什么?

谢谢。

最佳答案

我刚刚遇到这个问题。您必须在 TableContinuationToken 实例上使用 WriteXml()ReadXml() 方法,而不是使用自己的 XmlSerializer 实例。

    public static string SerializeToken(TableContinuationToken token)
{
string serialized = null;
if (token != null)
{
using (var writer = new StringWriter())
{
using (var xmlWriter = XmlWriter.Create(writer))
{
token.WriteXml(xmlWriter);
}
serialized = writer.ToString();
}
}

return serialized;
}

public static TableContinuationToken DeserializeToken(string token)
{
TableContinuationToken contToken = null;
if (!string.IsNullOrWhiteSpace(token))
{
using (var stringReader = new StringReader(token))
{
contToken = new TableContinuationToken();
using (var xmlReader = XmlReader.Create(stringReader))
{
contToken.ReadXml(xmlReader);
}
}
}

return contToken;
}

我认为这是因为类和属性上的序列化属性,但我尚未验证这一点。我只知道提供的代码是解决方案。

关于Azure表存储: Xml serialization for TableContinuationToken,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19972443/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com