【发布时间】:2015-01-05 08:30:22
【问题描述】:
###################
更新:感谢 user2622016,我认为“>”是有效的。
现在,在我的 c# 代码中,我有一个类,其中一个字段以 ">" 作为其值。
我想将类序列化为 xml WITHOUT ">" 被转义到 > 。
我正在使用 xmlSerializer 类。我的代码是:
memoryStream = new System.IO.MemoryStream();
System.Xml.XmlWriterSettings xmlWriterSettings = new System.Xml.XmlWriterSettings();
xmlWriterSettings.Encoding = encoding;
xmlWriterSettings.Indent = true;
System.Xml.XmlWriter xmlWriter = XmlWriter.Create(memoryStream, xmlWriterSettings);
Serializer.Serialize(xmlWriter, myObj);
任何想法如何在不使用“writeRaw”编写整个 XML 的情况下实现这一点(因为我希望整个类都被序列化)?
###################
“>”是 XML 中的有效字符吗?
简单的答案是否定的。根据我所知道的一切.. (另外,Invalid Characters in XML)
但是当我尝试使用在线可用的 xml 验证工具进行检查时 喜欢:http://www.w3schools.com/xml/xml_validator.asp,http://www.xmlvalidation.com/
它说以下 xml 是有效的:
<?xml version="1.0" encoding="utf-8"?>
<object>
<innerObj attrib="myAttrib">invalid char is > why valid</innerObj >
</object>
这怎么可能?
(我问的原因,我试图将此 xml 作为 c# 中的一个类并对其进行序列化。显然它转义“>”到"&gt;"。我不希望它发生..
关于这个“有效无效”字符以及如何解决我的序列化问题的任何解释? )
谢谢!!!
【问题讨论】:
-
为什么不想被替换? Is is recommended to do that(参见实体参考部分)
-
“我不希望它发生” ...当您不想要有效的 XML 时,请使用其他内容。
-
看@user2622016 的回答,这是有效的。它在我班级的字段中,我希望它在序列化时保持“>”。
-
仍然无法理解问题所在。当您序列化
&gt;时,它将在您的 xml 中替换为&gt;。当你反序列化它时,你会得到&gt;。你想在xml中看到&gt;吗?但是当你有<>时你会怎么做? -
右尖括号 (>) 可以使用字符串“
&gt;”来表示。句号。 读者可以将&gt;和&gt;正确解释为&gt;。出于美学原因,您希望它保持纯文本形式,对吗?
标签: c# xml validation serialization invalid-characters