1

我有一个可能包含 XML 和普通字符串的字符串。我需要解析出<math....</math>字符串中的所有实例。如何从这个字符串 中解析出这个(从<math>到)的多个部分?</math>

Here is some content <math
xmlns="http://www.w3.org/1998/Math/MathML">  
<mi>a</mi><mo>&#x2260;</mo><mn>0</mn> </math>, that is mixed in with
this other content <math xmlns="http://www.w3.org/1998/Math/MathML">  
<mi>a</mi><msup><mi>x</mi><mn>2</mn></msup>   <mo>+</mo>
<mi>b</mi><mi>x</mi>   <mo>+</mo> <mi>c</mi> <mo>=</mo> <mn>0</mn>
</math> we want to be able to seperate this string

背景:我试图使这个问题通用。我正在尝试做的细节是针对 MVC3 编码与 Raw。默认情况下,它将对所有内容进行编码。我不希望它对 MathML 进行编码,但希望它对其他所有内容进行编码。所以它的一部分我想渲染为 Html.Raw (MathML 部分),其余部分我想渲染为正常编码的字符串。

4

2 回答 2

1

如果您通常可以期望 XML 格式良好,或者至少格式一致,那么您应该能够使用正则表达式来去除 XML。

您可以尝试使用Expresso来制作您的表情。

如果你想解析你去掉的 XML,那是 .NET XMLParser 的工作。

于 2012-05-10T20:26:07.897 回答
0

我不是正则表达式,但这是我尝试过的,我得到了正确的结果。请将其用作基础并在必要时对其进行修改。

我是从Stackoverflow 上的这篇文章中得到的。

string yourstring = "<math xmlns=\"http://www.w3.org/1998/Math/MathML\">   <mi>a</mi><mo>&#x2260;</mo><mn>0</mn> </math>, that is mixed in with this other content <math xmlns=\"http://www.w3.org/1998/Math/MathML\">   <mi>a</mi><msup><mi>x</mi><mn>2</mn></msup>   <mo>+</mo> <mi>b</mi><mi>x</mi>   <mo>+</mo> <mi>c</mi> <mo>=</mo> <mn>0</mn> </math>";

try
{
     yourstring = Regex.Replace(yourstring, "(<math[^>]+>.+?</math>)", "");
}
catch (ArgumentException ex)
{
     // Syntax error in the regular expression
}

结果字符串是:

, that is mixed in with this other content 
于 2012-05-11T10:56:17.293 回答