我已经搜索,并正在寻找一个工具,将有助于与XML文件的工作。我必须了解不同的XML结构,当我必须自己在纸上绘制所有内容或为图表建模时,这会变得相当烦人。
我想知道是否有人可以提供一些工具来帮助理解XML结构?
对于那些不明白我为什么需要这个的人来说,想象一下:
<parent id="1">
<name> ... </name>
</parent>
<parent id="2">
<name> ... </name>
</parent>
<child mother="1" father="2"></child>在本例中,母亲和父亲由父元素中的id设置。
有时我有一个巨大的结构,它以这种方式与其他节点连接(使用ID或某个字符串标识符)。手动处理这件事很糟糕,我想知道是否有一些自动方法可以从XML绘制图表(只需最少的输入)。
谢谢
发布于 2011-09-01 06:41:40
我知道您想要一个工具,并且您正在使用UML语言标记您的问题,但是您可能会喜欢使用Perl模块,只是为了获得Graph::Easy的第一个大视图。
下面是示例XML:
<test>
<parent id="1"/>
<parent id="2"/>
<child id="11" mother="1" father="2"/>
<child id="10" mother="1" father="2"/>
</test>下面是一个小脚本:
#!/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");结果是:

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

发布于 2011-09-01 07:01:36
也许你用错了工具?XML最适合于识别以自上而下的树结构存储的数据。你描述的结构有更复杂的关系(父元素在某些情况下可能是顶级元素,在其他情况下可能是低级元素)……关系数据库(例如,基于SQL )更擅长描述的东西。
https://stackoverflow.com/questions/7263834
复制相似问题