Skip to content

XML Format Example

Christian Haettich edited this page Feb 17, 2017 · 1 revision

#XML Format Example

The XML format is defined by graphml: http://graphml.graphdrawing.org/

By running the command include_gardener ./inc -f xml -o graph.xml in this repository, the file graph.dot will contain the following:

<?xml version="1.0" encoding="UTF-8"?>
<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://graphml.graphdrawi
ng.org/xmlns http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd">
  <key id="key0" for="edge" attr.name="line" attr.type="int" />
  <key id="key1" for="node" attr.name="name" attr.type="string" />
  <graph id="G" edgedefault="directed" parse.nodeids="free" parse.edgeids="canonical" parse.order="nodesfirst">
    <node id="n0">
      <data key="key1">parser.h</data>
    </node>
    <node id="n1">
      <data key="key1">include_entry.h</data>
    </node>
    <node id="n2">
      <data key="key1">graph.h</data>
    </node>
    <node id="n3">
      <data key="key1">_template_.h</data>
    </node>
    <node id="n4">
      <data key="key1">iostream</data>
    </node>
    <node id="n5">
      <data key="key1">thread</data>
    </node>
    <node id="n6">
      <data key="key1">mutex</data>
    </node>
    <node id="n7">
      <data key="key1">deque</data>
    </node>
    <node id="n8">
      <data key="key1">vector</data>
    </node>
    <node id="n9">
      <data key="key1">condition_variable</data>
    </node>
    <node id="n10">
      <data key="key1">boost/filesystem.hpp</data>
    </node>
    <node id="n11">
      <data key="key1">memory</data>
    </node>
    <node id="n12">
      <data key="key1">map</data>
    </node>
    <node id="n13">
      <data key="key1">boost/graph/adjacency_list.hpp</data>
    </node>
    <node id="n14">
      <data key="key1">boost/graph/labeled_graph.hpp</data>
    </node>
    <edge id="e0" source="n0" target="n4">
      <data key="key0">24</data>
    </edge>
    <edge id="e1" source="n0" target="n5">
      <data key="key0">25</data>
    </edge>
    <edge id="e2" source="n0" target="n6">
      <data key="key0">26</data>
    </edge>
    <edge id="e3" source="n0" target="n7">
      <data key="key0">27</data>
    </edge>
    <edge id="e4" source="n0" target="n8">
      <data key="key0">28</data>
    </edge>
    <edge id="e5" source="n0" target="n9">
      <data key="key0">29</data>
    </edge>
    <edge id="e6" source="n0" target="n10">
      <data key="key0">31</data>
    </edge>
    <edge id="e7" source="n0" target="n1">
      <data key="key0">34</data>
    </edge>
    <edge id="e8" source="n0" target="n2">
      <data key="key0">35</data>
    </edge>
    <edge id="e9" source="n1" target="n11">
      <data key="key0">24</data>
    </edge>
    <edge id="e10" source="n1" target="n12">
      <data key="key0">25</data>
    </edge>
    <edge id="e11" source="n1" target="n4">
      <data key="key0">26</data>
    </edge>
    <edge id="e12" source="n1" target="n8">
      <data key="key0">27</data>
    </edge>
    <edge id="e13" source="n2" target="n4">
      <data key="key0">24</data>
    </edge>
    <edge id="e14" source="n2" target="n13">
      <data key="key0">26</data>
    </edge>
    <edge id="e15" source="n2" target="n14">
      <data key="key0">27</data>
    </edge>
    <edge id="e16" source="n2" target="n1">
      <data key="key0">29</data>
    </edge>
    <edge id="e17" source="n3" target="n4">
      <data key="key0">24</data>
    </edge>
  </graph>
</graphml>

Such graphml file can then be further processed for example via Python:

from pygraphml import Graph
from pygraphml import GraphMLParser

parser = GraphMLParser()
g = parser.parse( 'graph.xml' )

for node in g.nodes():
    print( "The file %s includes: " % node['key1'] )
    for child in node.children():
        print( " -> %s " % child['key1'] )
Clone this wiki locally