结束标记“>”在 xml 中是否为有效字符
本文关键字:xml 是否 有效字符 结束 | 更新日期: 2023-09-27 18:36:16
##
更新:感谢user2622016,我重新认识了">"是有效的。
现在,在我的c#代码中,我有一个类,其中一个字段的值为">"。我想将类序列化为 xml 而不会将">"转义为 >
.我正在使用 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 中是有效的字符吗?
简单的答案是否定的。 基于我所知道的一切。(另,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#中的一个类并对其进行序列化.显然它会转义">"到">"
.我不希望它发生..
关于这个"有效无效"字符以及如何解决我的序列化问题的任何解释?
谢谢!!!
文本中只能使用与号 (&) 和左尖括号 (<) 字符。>"大于"在 xml 文本字段中是绝对可以的,因为它不会使其模棱两可。请参阅第 2.4 章 http://www.w3.org/TR/2008/REC-xml-20081126/#syntax
与号字符 (&) 和左尖括号 (<) 不得 以其文字形式显示,除非用作标记分隔符, 或在注释、处理指令或 CDATA 部分中。如果 其他地方需要它们,必须使用任一数字对其进行转义 字符引用或字符串 " &" 和 " < 分别。右尖括号 (>) 可以使用 字符串 "
>
",并且为了兼容,必须使用 ">
"或出现在字符串 "]] 中的字符引用> ",当该字符串未标记 CDATA 的末尾时 部分。
为什么 C# 总是将其转义为>
?我不知道,也许是为了与以前的一些实现兼容?
根据标准,如果实施者愿意,他可以>
地逃脱>,但必须这样做,但只能组合]]>
您可以使用 CDATA。试试这个
<?xml version="1.0" encoding="utf-8"?>
<object>
<innerObj attrib="myAttrib">invalid char is <![CDATA[>]]> why valid</innerObj >
</object>