验证字符串作为XML属性值是否有效
本文关键字:是否 有效 属性 XML 字符串 验证 | 更新日期: 2023-09-27 18:01:18
给定一个字符串,我需要确定它作为XML中的属性值是否有效。
根据规范,以下三个字符是不允许的:
<
& (unless used to encode a disallowed character, such as "&")
" or ' (whichever is not used to wrap the value is allowed)
我的测试表明,创建一个包含这些字符的值的XAttribute对象似乎是有效的(我预计会出现异常,但没有抛出任何异常)。
是否有一种方法来检查给定的字符串是否作为XML属性的值有效(而不是手动检查这些字符)?
我的测试表明,创建一个包含这些字符的值的XAttribute对象似乎是有效的
是的,因为它们将被适当地转义。例如:
XElement element = new XElement("Foo",
new XAttribute("name", "Jon & Holly"));
Console.WriteLine(element);
打印出:
<Foo name="Jon & Holly" />
属性的逻辑内容是"Jon & Holly"
,但是XML文件文本中的表示是"Jon & Holly"
。
如果你想检查表示形式的有效性,你总是可以使用:
string text = "<x y='"" + value + "'" />";
try
{
XElement.Parse(text);
// TODO: Check that there's only one attribute in the result...
}
catch (XmlException e) { /* Invalid */ }
这太可怕了——你确定你真的需要这么做吗?