【发布时间】:2011-04-04 07:40:04
【问题描述】:
.NET 框架中是否有任何方法可以在给定字符是 XML 标记字符时返回 true?也就是说,其中一个字符'"<>_&,以及可能存在的任何其他字符。
我知道我也可以进行简单的字符串搜索,但想知道是否存在不依赖手动输入字符的内置方法。
【问题讨论】:
-
我不这么认为......但很想被证明是错误的! :-)
.NET 框架中是否有任何方法可以在给定字符是 XML 标记字符时返回 true?也就是说,其中一个字符'"<>_&,以及可能存在的任何其他字符。
我知道我也可以进行简单的字符串搜索,但想知道是否存在不依赖手动输入字符的内置方法。
【问题讨论】:
您可以查看following KB article。
【讨论】:
我不确定术语“XML 标记字符”(或者更确切地说是用于检测这些的与上下文无关的函数)是否有意义,因为您列出的某些字符仅具有特殊含义,具体取决于它们出现的上下文(例如' 和",如果它们出现在标签之外,则它们是普通字符)。
除此之外,您还可以编写自己的此类函数:
bool IsMarkupCharacter(char ch)
{
switch (ch)
{
case '\'':
case '\"':
case '<':
case '>':
case '&':
return true;
default:
return false;
}
}
当然,您会希望根据 XML 规范检查它是否真正完整。 (顺便说一下,我没有将_ 从您的列表中包括在内;无论如何,它对 XML 来说并不特别,AFAIK。)
【讨论】:
您也可以使用此代码
const string XMLCHARS = "'\"\\<>&";
if(XMLCHARS.Contains(c))
{
--
}
【讨论】:
你可以使用扩展
public static class CharExtension
{
public static bool IsXmlMarkup(this char charecter)
{
if(charecter == '\'' || charecter == '\"' || e.t.c)
return true;
return false;
}
}
然后就用
char c = '\'';
var res = c.IsXmlMarkup();
【讨论】: