【问题标题】:Visualize XML tree structure可视化 XML 树结构
【发布时间】:2016-02-27 02:14:51
【问题描述】:

我有几个 XML 文件,它们具有相似的结构,但有一些我不能忽视的差异。它们都是 TEI 文件。

我正在寻找一种方法来勾勒主要结构。

以下面的文字为例:

<text xmlns="http://www.tei-c.org/ns/1.0" xml:id="d1">
<body xml:id="d2">
<div1 type="book" xml:id="d3">
<head>Songs of Innocence</head>
<pb n="4"/>
<div2 type="poem" xml:id="d4">
<head>Introduction</head>
<lg type="stanza">
<l>Piping down the valleys wild, </l>
<l>Piping songs of pleasant glee, </l>
<l>On a cloud I saw a child, </l>
<l>And he laughing said to me: </l>
</lg>

我想抑制相同类型的节点和所有重复结构:

<body xml:id="d2">
<div1 type="book" xml:id="d3">
<head>Songs of Innocence</head>
<pb n="4"/>
<div2 type="poem" xml:id="d4">
<head>Introduction</head>
<lg type="stanza">
<l>...</l>
</lg>
<lg>...</lg>

所以,基本上我想将 XML 文档简化为最基本的结构。通过这种方式,我可以弄清楚如何使用 XSLT 正确转换它们。

【问题讨论】:

    标签: xml visualization graph-visualization


    【解决方案1】:

    以下是一些以树状结构查看 XML 的选项:

    1. 在 Web 浏览器中打开 XML 并获取大纲视图 可折叠元素。
    2. OxygenQTAssistantXMLSpy 的图形视图中打开 XML。
    3. 使用Graphviz or DotML ant build 创建您自己的 视觉表现。

    但请注意,您需要清理标记。您显示的内容不符合 XML 的条件,因为它缺少结束标记并且缺少单个根元素。 (XML 必须是 well-formed。)

    【讨论】:

      【解决方案2】:

      使用 perl XML::DT, (apt-get install libxml-dt-perl 如果未安装), 命令mkxmltype file.xml 返回一个简洁的描述 xml结构。示例

      $ mkxmltype -lines=1000  a.xml 
      
      # text ...Fri Feb 26 17:56:24 2016
      text    =>  body * xml:id
      body    =>  div1 * xml:id
      div1    =>  tup(div2, pb, head) * type * xml:id
      div2    =>  tup(head, lg) * type * xml:id
      pb  =>  empty * n
      head    =>  text
      lg  =>  seq(l) * type
      l   =>  text
      

      【讨论】:

      • 此工具存在无法解析带有转义字符的文件的问题。我收到很多c.xml:882: parser error : Entity 'eacute' not defined &lt;LM lemma="perch&amp;eacute;" catg="b"&gt;Perch&amp;eacute;&lt;/LM&gt;
      猜你喜欢
      • 2016-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-16
      相关资源
      最近更新 更多