1

我有从第三方应用程序创建的自定义 xml,它是关于电子数据的数据(图表)。现在我想在 mxgraph 中重写相同的数据。
请找到第三方应用程序的示例 xml

    <component type="Rerror" mirrored="0" typeid="57" nodematch="0" macrotype="2" position="280,260" orientation="0">
  <parameter idx="0" encrypted="0">
data unrelated to drawing here
  </parameter>
  <image>
    <hotzone points="60,-10,-60,10"/>
    <shape type="line" width="1" color="#0000ff" points="60,0,40,0"/>
    <shape type="line" width="1" color="#0000ff" points="40,0,30,-10"/>
    <shape type="line" width="1" color="#0000ff" points="30,-10,10,10"/>
    <shape type="line" width="1" color="#0000ff" points="10,10,-10,-10"/>
    <shape type="line" width="1" color="#0000ff" points="-10,-10,-30,10"/>
    <shape type="line" width="1" color="#0000ff" points="-30,10,-40,0"/>
    <shape type="line" width="1" color="#0000ff" points="-40,0,-60,0"/>
    <legend text="0.332 MOhm" position="-36,20" orientation="0" fontname="Arial" fontsize="12" bold="0" italic="0" color="#229922"/>
    <pin position="-60,0" dir="0" length="0" text="6"/>
    <pin position="60,0" dir="0" length="0" text="3"/>
    <label text="Rerror" position="250,236" textroot=" " orientation="0" color="#228822"/>
  </image>
</component>

上面的 xml 必须使用 mxgraph 进行解析和重绘。在哪里

  • 组件:是特定单元的整个图像(可以有很多组件

  • 参数:这部分应该是igonred

  • 图像:图像部分包含必须在图中绘制的 x、y 坐标的数据


我正在阅读 mxgraph 用户指南,并且我是 mxgraph 的新手。我能够使用“mxUtils.parseXml('location')”看到 xml 的正常 prase 请帮助我了解如何解析自定义文件

4

3 回答 3

1

mxGraph 不支持开箱即用的自定义 xml 支持。事实上,没有这样的工具可以将自定义转换为 mxGraph 可读的 xml。最近我们尝试使用 xsds 将自定义 xmls 转换为图形。使用 xsd 方法是处理 xmls 的更好方法。尝试以下步骤

  • 如果您有自定义 xml 的 xsd,则从中创建 java 类。(您的 xml 看起来更简单,如果您没有 xsd,则可以创建它)。
  • 从互联网获取 mxGraph xsd。(虽然他们官方没有发布任何 xsd,但互联网上有可用的版本)。
  • 从自定义 xml java 类中读取数据并将其填充到 mxGraph-xml-java 类中。

就如此容易。

于 2015-04-29T17:19:37.727 回答
0

parseXML()只会使它更容易在代码中使用(如果需要,可以创建一个 DOM 文档),但您必须手动编写“转换器”。

为您的每个<shape>文件创建一个 mxCell。为您的各种单元格创建不同的样式,您就完成了。

如果你所有的形状都是矩形,它应该是相当简单的!

于 2015-04-20T12:50:37.423 回答
0
  1. 将您的 xml 转换为 java 对象。这与 JGraph 无关。如果 .xsd 可用,则可以使用 JAXB。

  2. 从 xml 中获得 java 对象后,您可以使用其中包含的信息来创建边和顶点。在您基于 JGraph 的应用程序中,mxGraph该类具有方法insertVertexinsertEdge,它将您的位置和标签作为参数。例如,您可以遍历从 XML 解析的 java 对象并graph.insertVertex()为每个对象调用。

  3. 如果mxGraph对象不是直接可用的,您可以使用mxGraphComponent.getGraph()来访问它。mxGraphComponent应该可以从您选择的编辑器中获得,即。editor.getGraphComponent().

于 2015-07-14T07:30:26.187 回答