当前位置: 首页 > 编程语言 > C#

将MathML解析为简单的数学表达式Share

时间:2023-04-10 21:16:48 C#

将MathML解析为简单的数学表达式现在我想将MathDox生成的MathML转换成表达式,我以后可以使用这些表达式来评估以找到答案。例如:MathML:3+5想要转换为表达式:3+5现在我可以使用3+5得到答案8。我正在为这种转换搜索javascript或c#解决方案。试图用谷歌搜索但没有得到太多帮助。我在这里找到了一个更接近的解决方案,但它也是一个桌面应用程序和一个商业广告。但是,我想要一个开源Web应用程序来解决我的问题。任何帮助将不胜感激。注意:为了简单起见,我在上面的例子中只提到了简单的加法,但是MathML也可以包含复杂的表达式,例如求导和对数。这可以通过JavaScript中的以下步骤实现:从MathML转换为XMLDOM从XMLDOM转换为纯文本使用“eval”函数获取表达式的十进制值下面的代码就是这样做的:functiongetDOM(xmlstring){解析器=新的DOMParser();返回parser.parseFromString(xmlstring,"text/xml");}functionremove_tags(node){varresult="";varnodes=node.childNodes;vartagName=node.tagName;if(!nodes.length){if(node.nodeValue=="π")结果="pi";elseif(node.nodeValue=="")结果="";否则结果=节点。节点值;}elseif(tagName=="mfrac"){result="("+remove_tags(nodes[0])+")/("+remove_tags(nodes[1])+")";}elseif(tagName=="msup"){result="Math.pow(("+remove_tags(nodes[0])+"),("+remove_tags(nodes[1])+"))";}elsefor(vari=0;i3+5");alert(s);alert(eval(s));s=stringifyMathML("12+1");alert(s);alert(eval(s)));s=stringifyMathML("24");alert(s);alert(eval(s));s=stringifyMathML("4");alert(s);alert(eval(s));继上一个代码,可以扩展已接受的MathML。例如,添加三角函数或任何其他自定义函数将很容易。出于本文的目的,我使用了mathml编辑器中的工具来构建MathML(用于代码的测试部分)。以上就是C#学习教程:ParsingMathMLintosimplemathematicalexpressions全部内容分享。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: