c# - C# 将对象序列化为 SOAP 字符串数组问题
问题描述
我有一个问题,尝试将包含字符串数组的对象序列化为soap会导致我的应用程序出现异常。我正在执行以下操作来创建肥皂格式化程序:
XmlTypeMapping mapping = new SoapReflectionImporter().ImportTypeMapping(obj.GetType());
XmlSerializer serializer = new XmlSerializer(mapping);
当我在序列化程序上调用 Serialize 时,出现以下异常。“状态 Epilog 中的令牌 StartElement 将导致无效的 XML 文档。”
但是,如果我只想要常规 xml 并像这样创建我的 XmlSerializer:
XmlSerializer serializer = new XmlSerializer(obj.GetType());
一切正常,xml 包含字符串数组。
我在下面有一个完整的示例,如果有人可以看一下我的机器上的问题,我将非常感激,因为我没有想法!
static void Main(string[] args)
{
GetAlarmEventTypesResponse bob = new GetAlarmEventTypesResponse();
bob.GetAlarmEventTypesTypes = new string[] { "bob", "bob1", "bob2" };
bob.version = "2.0";
// works
string xml = GetRegularDocument(bob);
Console.WriteLine(xml);
// throws exception
string soap = GetSoapDocument(bob);
Console.WriteLine(soap);
}
//------------------------------------------------------------------------------
[System.Xml.Serialization.SoapTypeAttribute(Namespace = "http://example/common/dataexchange/2011/05")]
public class GetAlarmEventTypesResponse
{
public GetAlarmEventTypesResponse()
{
version = "1.2";
}
[System.Xml.Serialization.XmlArrayItemAttribute("Type", IsNullable = false)]
public string[] GetAlarmEventTypesTypes { get; set; }
[System.Xml.Serialization.XmlAttributeAttribute()]
public string version { get; set; }
}
//------------------------------------------------------------------------------
public static string GetRegularDocument(object obj)
{
string document = null;
XmlSerializer serializer = new XmlSerializer(obj.GetType());
using (StringWriter textWriter = new StringWriter())
{
serializer.Serialize(textWriter, obj);
document = textWriter.ToString();
}
return document;
}
//------------------------------------------------------------------------------
public static string GetSoapDocument(object obj)
{
string document = null;
XmlTypeMapping mapping = new SoapReflectionImporter().ImportTypeMapping(obj.GetType());
XmlSerializer serializer = new XmlSerializer(mapping);
using (StringWriter textWriter = new StringWriter())
{
serializer.Serialize(textWriter, obj);
document = textWriter.ToString();
}
return document;
}
解决方案
推荐阅读
- node.js - 这是nodejs上的内存泄漏吗?
- android - 无法从 Raw 文件夹获取路径 - java.nio.file.NoSuchFileException
- php - PHPMoAdmin Web 界面无法连接到 MongoDB
- javascript - JQuery toggleClass 方法不存在
- git - 变基后在两个克隆中同步分支
- c# - 使用 Visual Studio 2019 在 C# 中查看 Excel 工作表 - 如何使工作表可见?
- css - 当存在单独的元素时,可以在元素上放置 css 规则吗?
- java - 将 prometheus jmx 代理 jar 添加到 JIB 构建
- sql - 以 SQL Variant 作为列之一的非聚集索引如何工作?
- excel - 使用 VBA 过滤数据透视表