【发布时间】:2011-12-11 21:57:41
【问题描述】:
我似乎无法弄清楚为什么这个测试没有通过
测试是:
给定以下 XML:
<?xml version="1.0" encoding="utf-8"?>
<foo>
<account>
1234567890
</account>
<deptCode>
ABCXYZ
</deptCode>
</foo>
还有以下类:
class Foo {
[XmlElement(ElementName = "account", DataType = "normalizedString")]
string account;
[XmlElement(ElementName = "deptCode", DataType = "normalizedString"]
string deptCode;
}
当该 XML 被反序列化时:
XmlSerializer serializer = new XmlSerializer(typeof(Foo));
Foo myFoo = (Foo) serializer.Deserialize(xmlReader);
我得到以下值:
Foo.account = "\r\n 1234567890 \r\n"
Foo.deptCode = "\r\n ABCXYZ \r\n"
而不是预期的
Foo.account = "1234567890"
Foo.deptCode = "ABCXYZ"
我怎样才能使反序列化过程给我预期的结果?我认为DataType="normalizedString" 可能会这样做,但它似乎没有效果,当我使用XmlReaderSettings.IgnoreWhitespace 时,它只是去掉了“\r”字符,留下了“\n 1234567890”
【问题讨论】:
-
反序列化对象的代码是什么?可能您需要在反序列化器上设置一些选项。
-
添加了有问题的反序列化代码,我能看到的唯一相关设置是前面提到的 XmlReaderSettings.IngoreWhitespace,它仍然给我留下了换行符。
-
xmlReader是什么类型的?你在使用 XmlTextReader 吗?
-
XmlReader 和 XmlTextReader 似乎都不起作用
标签: c# .net xml serialization xml-deserialization