2

XML要素の逆シリアル化に問題があります。これは、逆シリアル化機能によって見つからないXML要素の名前空間に関係していると思います。

データは外部ソースから送信されますが、文字列として変更することはできず、C#4.0を使用しています。

どんな助けでも、ありがたいことに感謝します。

string xml = "<boolean xmlns=\"http://schemas.microsoft.com/2003/10/serialization/\">false</boolean>";

var xSerializer = new XmlSerializer(typeof(bool));
using (var sr = new StringReader(xml)) 
using (var xr = XmlReader.Create(sr))
{
    var y = xSerializer.Deserialize(xr);
}

エラー:

System.InvalidOperationException was unhandled by user code
  HResult=-2146233079
  Message=There is an error in XML document (1, 2).
  Source=System.Xml
  StackTrace:
       at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
       at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle)
            ...
            ...
            ...
  InnerException: System.InvalidOperationException
       HResult=-2146233079
       Message=<boolean xmlns='http://schemas.microsoft.com/2003/10/serialization/'> was not expected.
       Source=System.Xml
       StackTrace:
            at System.Xml.Serialization.XmlSerializationPrimitiveReader.Read_boolean()
            at System.Xml.Serialization.XmlSerializer.DeserializePrimitive(XmlReader xmlReader, XmlDeserializationEvents events)
            at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
       InnerException: 
4

2 に答える 2

3

以下のようにシリアライザーを作成すると機能します

var xSerializer = new XmlSerializer(typeof(bool),null, null, 
                         new XmlRootAttribute("boolean"), 
                         "http://schemas.microsoft.com/2003/10/serialization/");
于 2012-10-22T15:39:47.683 に答える
0

ブール値を逆シリアル化する場合は、xml名前空間と属性を使用できません。実際、これを逆シリアル化する必要があります。

string xml = "<boolean>false</boolean>";
于 2012-10-22T15:39:56.760 に答える