Mathematica - 创建符号XML的问题

时间:2011-07-11 11:22:10

标签: wolfram-mathematica

在mathematica应用程序中,我有一个OO-System对象,它代表一个长方体,如下所示:

 In[27]:= oscg@getItem[11]@getObject[]

 Out[27]= {"GE", {"CB", {{3., 0., 3.}, 0.9}}, {0.3}}

我使用以下方法将此对象传输到Xml:

 In[28]:= oscg@getItem[11]@toXml[]

 Out[28]= XMLElement["cuboid", {"point" -> "{3., 0., 3.}", 
  "diameter" -> "9
  --
  10", "hue" -> "0.3"}, {}]

我原本希望在这里:

 XMLElement["cuboid", {"point" -> "{3., 0., 3.}", "diameter" -> "0.9", "hue" -> "0.3"}, {}]

方法代码如下:

 toXml[]:= Module[
{ret,
p=getPoint[] + getColref[]@absPoint[getMe[]], 
d=getDiameter[],
h=getHue[]},
ret=XMLElement["cuboid",{"point"->ToString[p], "diameter"->ToString[d], 
    "hue"->ToString[h]}, {}];
ret
];

问题是0.9变为9-10。

我考虑过格式问题,但色调很好地输出为0.3。 (在读取Xml并将其解析回对象创建代码的阶段,问题变得至关重要。)

问题:

它可能是格式,显示问题吗? (Mathematica中我不太熟悉的一个话题。)关于如何攻击它的任何想法?

1 个答案:

答案 0 :(得分:2)

您的直径可能存储为理性:

 In[1]:= ToString[9/10]
Out[1]:= 9
         --
         10

请注意,需要两个行尾代码才能将该分数打印为字符串。

ToString[N@d]中尝试ToString[N@h]toXml[]等。您也可以使用ToString[d,InputForm]获取9/10