【问题标题】:Mathematica - Problem with creating symbolic XMLMathematica - 创建符号 XML 的问题
【发布时间】:2011-07-11 11:22:09
【问题描述】:

在一个数学应用程序中,我有一个 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 中不太熟悉的一个主题。)关于如何解决这个问题的任何想法?

【问题讨论】:

    标签: wolfram-mathematica


    【解决方案1】:

    您的直径可能存储为有理数:

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

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

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

    【讨论】:

    • 成功了!!非常感谢你。我通过计算点和直径生成了一系列立方体。这就是 Mathematica 必须将数字存储为分数的地方。
    • 仍然,将分数输出为 Xml 是一种奇怪的方式。但我想它应该是这样的。
    猜你喜欢
    • 1970-01-01
    • 2011-09-25
    • 2014-06-04
    • 2011-12-18
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    相关资源
    最近更新 更多