我有从第三方应用程序得到的xml,结构如下:
<root>
<id>1</id>
<data><node>i like it<node>\n\r
<node>i like it<node></data>
</root>
正如您所见,<data>
内有一个转义的xml,同样在<data>
的第一行末尾有一行换行\n\r
,前面有2个空格在<data>
。
这是我的反序列化方法:
public static root Deserialize(string xml)
{
System.IO.StringReader stringReader = null;
try
{
stringReader = new System.IO.StringReader(xml);
return ((root)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
}
finally
{
if ((stringReader != null))
{
stringReader.Dispose();
}
}
}
使用此方法,数据元素的值为:
"<node>i like it<node>\n <node>i like it<node>"
现在,我的问题是:
为什么从数据字符串中删除\r
?
除了使用简单的string.replace();
之外,还有其他方法可以删除换行符和空格吗?
答案 0 :(得分:1)
......数据元素的值是:
"<node>i like it<node>\n <node>i like it<node>"
不,该值实际上是
"<node>i like it<node>\n <node>i like it<node>"
为什么从数据字符串中删除
\r
?
\r
已标准化。 XML中的换行符是\n
- 只有在XML解析过程中,任何不同类型的换行符都会被替换。
除了使用简单的
string.replace();
之外,还有其他方法可以删除换行符和空格吗?
你可以正则表达式替换\n$\s*
空字符串:
Regex.Replace(data, @"\n\s*", String.Empty, RegexOptions.Multiline)