结束标记“>”在 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#中的一个类并对其进行序列化.显然它会转义">"到"&gt;".我不希望它发生..

关于这个"有效无效"字符以及如何解决我的序列化问题的任何解释?

谢谢!!!

结束标记“>”在 xml 中是否为有效字符

文本中只能使用与号 (&) 和左尖括号 (<) 字符。>"大于"在 xml 文本字段中是绝对可以的,因为它不会使其模棱两可。请参阅第 2.4 章 http://www.w3.org/TR/2008/REC-xml-20081126/#syntax

与号字符 (&) 和左尖括号 (<) 不得 以其文字形式显示,除非用作标记分隔符, 或在注释、处理指令或 CDATA 部分中。如果 其他地方需要它们,必须使用任一数字对其进行转义 字符引用或字符串 " &" 和 " < 分别。右尖括号 (>) 可以使用 字符串 " &gt; ",并且为了兼容,必须使用 "&gt;"或出现在字符串 "]] 中的字符引用> ",当该字符串未标记 CDATA 的末尾时 部分。

为什么 C# 总是将其转义为&gt?我不知道,也许是为了与以前的一些实现兼容?

根据标准,如果实施者愿意,他可以&gt地逃脱>,但必须这样做,但只能组合]]>

您可以使用 CDATA。试试这个

<?xml version="1.0" encoding="utf-8"?>
<object>
  <innerObj attrib="myAttrib">invalid char is <![CDATA[>]]> why valid</innerObj >
</object>