C# 替换<;img>;与<;数学>;将减号改为问号

C# 替换<;img>;与<;数学>;将减号改为问号,c#,html-agility-pack,C#,Html Agility Pack,我想用MathML(image01.xml)替换,如下所示: <math> <semantics> <mrow> <mfrac> <mrow> <mo stretchy="false">(</mo> <mi>n</mi> <mo>−</mo> &l

我想用MathML(image01.xml)替换
,如下所示:

<math>
  <semantics>
    <mrow>
      <mfrac>
        <mrow>
          <mo stretchy="false">(</mo>
          <mi>n</mi>
          <mo>−</mo>
          <mn>1</mn>
          <mo stretchy="false">)</mo>
          <mo>×</mo>
          <mi>n</mi>
        </mrow>
        <mn>2</mn>
      </mfrac>
    </mrow>
  </semantics>
</math>
替换后,嵌入的MathML不同-
更改为

更新: newStr是(从Debug开始,负号仍然存在):


将跨度处理为:

var mo = span.SelectNode("//mo")
if (mo.innerText=="-") { mo.innerText = "?"; }

(未测试…

为什么要对整个字符串调用
Replace
方法?这段代码更具可读性:
span.InnerHtml=newStr
为什么不显示用于
newStr
的值,以及如何获取
span
的值?@luk我打赌这不会有什么帮助,因为bug在保存代码时。。。这在文章中也不存在。@Luuk,newStr是“\r\n\r\n\r\n\r\n(\r\n\r\n\r\n−\r\n 1\r\n)\r\n×\r\n\r\n\r\n 2\r\n\r\n\r\n“谢谢,但是“-”符号是从docx动态解析的,硬代码可能不是一个好的解决方案,我深入研究了代码,发现“-”原来是一个“−;”在xml中,在我操作xml并使用XmlDocument保存后,−;'更改为“-”,在使用HtmlAgilityPack替换之后,它将更改为“?”。LOL,您的问题(再次)缺少该信息。“三思而后行”的另一个例子(一般来说)!
<math>
  <semantics>
    <mrow>
      <mfrac>
        <mrow>
          <mo stretchy="false">(</mo>
          <mi>n</mi>
          <mo>?</mo>
          <mn>1</mn>
          <mo stretchy="false">)</mo>
          <mo>×</mo>
          <mi>n</mi>
        </mrow>
        <mn>2</mn>
      </mfrac>
    </mrow>
  </semantics>
</math>
==============================================================
"<math>\r\n  <semantics>\r\n    <mrow>\r\n      <mfrac>\r\n        <mrow>\r\n          <mo stretchy=\"false\">(</mo>\r\n          <mi>n</mi>\r\n          <mo>−</mo>\r\n          <mn>1</mn>\r\n          <mo stretchy=\"false\">)</mo>\r\n          <mo>×</mo>\r\n          <mi>n</mi>\r\n        </mrow>\r\n        <mn>2</mn>\r\n      </mfrac>\r\n    </mrow>\r\n  </semantics>\r\n</math>"
var spans = doc.DocumentNode.SelectNodes("//span[img]");
foreach (HtmlNode span in spans)
{
    // handle span here
}
var mo = span.SelectNode("//mo")
if (mo.innerText=="-") { mo.innerText = "?"; }