6 .net c# xml serialization xml-deserialization
我似乎无法弄清楚为什么这个测试没有通过
测试是:
给出以下XML:
<?xml version="1.0" encoding="utf-8"?>
<foo>
<account>
1234567890
</account>
<deptCode>
ABCXYZ
</deptCode>
</foo>
Run Code Online (Sandbox Code Playgroud)
和以下课程:
class Foo {
[XmlElement(ElementName = "account", DataType = "normalizedString")]
string account;
[XmlElement(ElementName = "deptCode", DataType = "normalizedString"]
string deptCode;
}
Run Code Online (Sandbox Code Playgroud)
当使用以下方式对XML进行反序列化时:
XmlSerializer serializer = new XmlSerializer(typeof(Foo));
Foo myFoo = (Foo) serializer.Deserialize(xmlReader);
Run Code Online (Sandbox Code Playgroud)
我得到以下值:
Foo.account = "\r\n 1234567890 \r\n"
Foo.deptCode = "\r\n ABCXYZ \r\n"
Run Code Online (Sandbox Code Playgroud)
而不是预期的
Foo.account = "1234567890"
Foo.deptCode = "ABCXYZ"
Run Code Online (Sandbox Code Playgroud)
我怎样才能使反序列化过程给我预期的结果?我认为DataType="normalizedString"可能会这样做,但它似乎没有效果,当我使用时XmlReaderSettings.IgnoreWhitespace,它只会带走"\ r"字符,留下"\n 1234567890"
看起来它正在按预期工作。来自IgnoreWhitespace文档:
不被认为重要的空白包括空格、制表符和空行,用于分隔标记以提高可读性。
基本上,它的作用是保留元素之间的空格(当设置为 时false),例如:
<Foo>
<bar>Text</bar>
</Foo>
Run Code Online (Sandbox Code Playgroud)
<Foo>和之间的换行符<bar>将由读者返回。设置IgnoreWhitespace为true,则不会。
为了实现你的目标,你必须进行程序化的修剪,正如基里尔提到的那样。当您考虑一下时,读者应该如何知道元素的纯字符串内容的空格(如您的示例中)是否仅用于缩进目的或实际内容?
| 归档时间: |
|
| 查看次数: |
4871 次 |
| 最近记录: |