【发布时间】:2012-03-21 20:50:33
【问题描述】:
我正在使用来自System.Xml.Linq 的 XML 解析方法。我已经忽略这个问题很长一段时间了,但最后我想我应该问一下这是为什么。
如果您尝试在字符串属性中放置一个左尖括号<,解析器将抛出异常,因为它认为它正在打开一个新标签。例如:
<Foo text="This is my <sample> text" />
为什么它不能处理这个?任何了解解析器的人都知道这应该不是问题。解析器应该理解它位于一个开放字符串的中间,并且可以将此字符视为非特殊字符。相反,我必须在任何地方都以&lt; 逃避这些。
我能想到的唯一答案是这是一个有意识的选择。设计者认为,在这种情况下,更有可能是有人忘记关闭字符串,而不是他们想要在字符串中包含这个字符。这个假设是正确的还是背后有真正的技术原因,而我是不理解解析器的人?有什么办法可以不用逃避这些角色吗?
【问题讨论】:
-
我敢打赌是因为他们想要实施标准,而不是一些外行对它的解释。上帝知道处理 XML 的每个其他人并不真正知道什么是有效的,什么是他们糟糕的解析器所接受的,没有必要让它变得更糟。
标签: .net linq-to-xml xml-parsing