微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

“xmlns=''> is not expected”同时反序列化为对象在某些计算机上

如何解决“xmlns=''> is not expected”同时反序列化为对象在某些计算机上

我正在尝试反序列化 XML。我的系统在 dev env 中都没有问题。或运行时。我的 QA 分析师也没有问题。但是,在客户端站点,我们收到以下错误

XML 文档中有错误system.invalidOperationException: 不是预期的。 在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderCrashEntity.Read74_CrashEntity() 在 System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader,String encodingStyle,XmlDeserializationEvents 事件) 在 Utility.XML.XMLUtility.DeserializeObject(String XML,Type ObjectType) 在 DirectoryFramework.ImportData()

是什么原因导致在客户端站点出现这种情况,而在 dev/qa 环境中却没有?

源 XML(小片段):

<CitationEntity>
  <CitationNumber>E00C000006</CitationNumber>
  <Agency>123456789</Agency>
  <CaseNumber>1234456</CaseNumber>
</CitationEntity>

反序列化方法

Type entListType = typeof(List<>).MakeGenericType(entType);
object entities = null;
try
{
    entities = XMLUtility.DeserializeObject(outputXml,entListType);
}
catch (Exception ex)
{...}


public static Object DeserializeObject(String XML,Type ObjectType)
{
    Object retval = null;
    XmlSerializer serializer = new XmlSerializer(ObjectType);
    XmlDocument doc = new XmlDocument();
    doc.LoadXml(XML);
    XmlNode node = doc.DocumentElement;
    XmlReader readnode = new XmlNodeReader(node);
    retval = serializer.Deserialize(readnode);

    return retval;
}

目标类片段:

[DataContract,Serializable]
[ModuleCode("TC")]
[InvolvementDate("CitationDate")]
[MFRStatusHistoryModuleCode("TC")]
public partial class CitationEntity : Entities.baseEntity,INameEntity
{
    [DataMember]
    [DefaultValue("")]
    public string Agency
    {
        get { return _Agency; }
        set
        {
            if (value != _Agency)
            {
                _Agency = value;
                OnPropertyChanged("Agency");
            }
        }
    }
    string _Agency;

    [DataMember]
    [DefaultValue("")]
    public string CaseNumber
    {
        get { return _CaseNumber; }
        set
        {
            if (value != _CaseNumber)
            {
                _CaseNumber = value;
                OnPropertyChanged("CaseNumber");
            }
        }
    }
    string _CaseNumber;

    [DataMember]
    [DefaultValue("")]
    public string CitationNumber
    {
        get { return _CitationNumber; }
        set
        {
            if (value != _CitationNumber)
            {
                _CitationNumber = value;
                OnPropertyChanged("CitationNumber");
            }
        }
    }
    string _CitationNumber;
}

我的计算机上安装了 .net Framework 4.7,客户端计算机上安装了 4.0 左右。我认为这可能是问题所在。我们将客户端计算机更新到 4.8,它没有任何区别。我更新到 4.8,它仍然可以正常工作。

解决方法

很抱歉在这方面误报。我注意到在产品安装过程中错误地选择了目标实体。在我一行一行地检查安装程序的安装配置后,我注意到实体是用于崩溃,而不是事件。一旦设置了正确的实体,反序列化就像一个魅力。

经验教训...当出现意外错误时,不要假设其他人正确安装了产品。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?