【问题标题】:What would be the best way of checking whether a string contains XML tags?检查字符串是否包含 XML 标记的最佳方法是什么?
【发布时间】:2013-06-13 15:30:41
【问题描述】:

我知道下面会找到潜在的标签,但是有没有更好的方法来检查字符串是否包含 XML 标签,以防止在 XML 文件之间读取/写入字符串时出现异常?

    string testWord = "test<a>";
    bool foundTag = Regex.IsMatch(testWord, @"^*<*>*$"));

【问题讨论】:

  • 这是某些解析方案的一部分吗?为什么不使用为读取 XML 而设计的类,例如 XmlDocument
  • 更好地解释您的问题。 testWord 是要插入 XML 文档的变量,还是要从随机字符串中提取 XML 文档,在本例中为 testWord
  • 字符串将作为属性写入 XML 文件。为了防止误读文件,我试图阻止该字符串包含一个标签,该标签可以以现有元素或属性的值开始或结束。
  • 那你问错问题了。正确的问题是:“如何正确地转义字符串以便将其插入 XML 文档”,答案是:您不必这样做,因为 XmlElement.InnerText property 自动逃脱其输入。如果您没有使用XmlDocument 或其他库来编写 XML,那您就错了。

标签: c# xml regex


【解决方案1】:

我会为此使用另一个正则表达式

Regex.IsMatch(testWord, @"<.+?>");

但是,即使匹配,也不能保证您的文件实际上是 一个 xml 文件,因为正则表达式还可以匹配无效的 "&lt;&lt;a&gt;""a &lt;= b &gt;= c" 等字符串这显然是 not xml。

您应该考虑改用XmlDocument class

XmlDocument xmlDoc = new XmlDocument();
try
{
    xmlDoc.Load(testWord);
}
catch
{
    // not an xml
}

【讨论】:

    【解决方案2】:

    在通过 XML 发送之前,为什么不HtmlEncode 字符串呢?这样可以避免difficulties with Regex parsing tags

    【讨论】:

      猜你喜欢
      • 2014-12-20
      • 2012-06-15
      • 2015-09-29
      • 2012-12-21
      • 2011-07-04
      • 1970-01-01
      • 2018-10-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多