首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XML建模工具

XML建模工具
EN

Stack Overflow用户
提问于 2011-09-01 05:44:53
回答 2查看 300关注 0票数 0

我已经搜索,并正在寻找一个工具,将有助于与XML文件的工作。我必须了解不同的XML结构,当我必须自己在纸上绘制所有内容或为图表建模时,这会变得相当烦人。

我想知道是否有人可以提供一些工具来帮助理解XML结构?

对于那些不明白我为什么需要这个的人来说,想象一下:

代码语言:javascript
复制
<parent id="1"> 
 <name> ... </name>
</parent>
<parent id="2">
 <name> ... </name>
</parent>

<child mother="1" father="2"></child>

在本例中,母亲和父亲由父元素中的id设置。

有时我有一个巨大的结构,它以这种方式与其他节点连接(使用ID或某个字符串标识符)。手动处理这件事很糟糕,我想知道是否有一些自动方法可以从XML绘制图表(只需最少的输入)。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-01 06:41:40

我知道您想要一个工具,并且您正在使用UML语言标记您的问题,但是您可能会喜欢使用Perl模块,只是为了获得Graph::Easy的第一个大视图。

下面是示例XML:

代码语言:javascript
复制
<test>
  <parent id="1"/>
  <parent id="2"/>
  <child id="11" mother="1" father="2"/>
  <child id="10" mother="1" father="2"/>
</test>

下面是一个小脚本:

代码语言:javascript
复制
#!/usr/bin/perl -w
use 5.010;
use strict;
use warnings;

use Graph::Easy;
use IO::All;
use Path::Class;
use XML::LibXML;

my $graph   = Graph::Easy->new(timeout => 100);
my $parser  = XML::LibXML->new();
my $xmlFile = file('...') # Replace by your path.

my $dom = $parser->parse_file($xmlFile);
foreach my $childNode ($dom->findnodes('//child'))
{
    $graph->add_edge
    (
        $childNode->getAttribute('id'),
        $childNode->getAttribute('mother'),
        'has mother'
    );
    $graph->add_edge
    (
        $childNode->getAttribute('id'),
        $childNode->getAttribute('father'),
        'has father'
    );
}

$graph->as_svg > io("graph.svg");

结果是:

这只是一个非常简单的示例,但您可以轻松地进一步添加不同类型的线条、颜色等。

票数 2
EN

Stack Overflow用户

发布于 2011-09-01 07:01:36

也许你用错了工具?XML最适合于识别以自上而下的树结构存储的数据。你描述的结构有更复杂的关系(父元素在某些情况下可能是顶级元素,在其他情况下可能是低级元素)……关系数据库(例如,基于SQL )更擅长描述的东西。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7263834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档