【发布时间】:2015-09-08 07:16:29
【问题描述】:
这是一个将 xml 文件转换为文本的 javascript 文件。此文本通常是方程式。我希望此方程式能够使传递给 python 的 xml 的结果产生所需的结果。任何帮助都是可观的。
function getDOM(xmlstring) {
parser=new DOMParser();
return parser.parseFromString(xmlstring, "text/xml");
}
function remove_tags(node) {
var result = "";
var nodes = node.childNodes;
var tagName = node.tagName;
if (!nodes.length) {
if (node.nodeValue == "π") result = "pi";
else if (node.nodeValue == " ") result = "";
else result = node.nodeValue;
} else if (tagName == "mfrac") {
result = "("+remove_tags(nodes[0])+")/("+remove_tags(nodes[1])+")";
} else if (tagName == "msup") {
result = "Math.pow(("+remove_tags(nodes[0])+"),("+remove_tags(nodes[1])+"))";
} else for (var i = 0; i < nodes.length; ++i) {
result += remove_tags(nodes[i]);
}
if (tagName == "mfenced") result = "("+result+")";
if (tagName == "msqrt") result = "Math.sqrt("+result+")";
return result;
}
function stringifyMathML(mml) {
xmlDoc = getDOM(mml);
return remove_tags(xmlDoc.documentElement);
}
xml文件示例
s = stringifyMathML(" <math><mi>sin</mi><mfenced><mi>x</mi></mfenced></math>");
alert(s);
alert(eval(s));
我期望输出是 math.sin(x)
【问题讨论】:
-
@Baart 我在第 25 行输入了这个 else if (tagName == "sin") { result = "math.sin("+remove_tags(nodes[0])+")";跨度>
-
现在的结果是“sin(x)”,对吗?你错过了“数学”。部分?
-
是的,我需要数学。部分
标签: javascript python xml parsing mathml