尝试使用正则表达式从字符串中提取值。字符串如下所示:
<faultcode><![CDATA[900015The new password is not long enough. PasswordMinimumLength is 6.]]></faultcode>
我正在尝试仅向最终用户显示错误消息。
答案 0 :(得分:2)
由于您可能希望所有内容<![CDATA[
和]]>
都适合:
<!\[CDATA\[(.+?)\]\]>
答案 1 :(得分:2)
唯一明智的做法是将其加载到XElement
(或XDocument,XmlDocument)中,并从CDATA元素中提取值。
XElement e = XElement.Parse(xmlSnippet);
string rawMsg = (e.FirstNode as XCData).Value;
string msg = rawMsg.Substring("900015".Length);
答案 2 :(得分:0)
已更新以对应问题编辑:
var xml = XElement.Parse(yourString);
var allText = xml.Value;
var stripLeadingNumbers = Regex.Match(xml.Value, @"^\d*(.*)").Groups[1].Value;
答案 3 :(得分:0)
首先,最重要的是,使用regex to parse XML / HTML is bad。
现在,通过错误消息我假设你的意思是文本,不包括数字。像这样的表达式可能会起到作用:
\<([^>]+)\><!\[CDATA\[\d*(.*)\]\]>\</\1\>
错误消息将在第二组中。这将与您提供的示例一起使用,但我很快会使用XDocument
或XmlDocument
来解析它。如果你正在使用C#,那么就没有充分的理由不使用这两个类。