2010-07-17 3 views
4

Я хотел бы построить график, показывающий, какие теги используются как дочерние элементы, из которых другие теги в данном XML-документе.Построение графика структуры XML-документа

Я написал эту функцию, чтобы получить уникальный набор дочерних тегов для данного тега в lxml.etree дереве:

def iter_unique_child_tags(root, tag): 
    """Iterates through unique child tags for all instances of tag. 

    Iteration starts at `root`. 
    """ 
    found_child_tags = set() 
    instances = root.iterdescendants(tag) 
    from itertools import chain 
    child_nodes = chain.from_iterable(i.getchildren() for i in instances) 
    child_tags = (n.tag for n in child_nodes) 
    for t in child_tags: 
     if t not in found_child_tags: 
      found_child_tags.add(t) 
      yield t 

Есть ли график строитель общего назначения, который я мог бы использовать с этим функция для создания dotfile или графика в другом формате?

Я также получаю подозрительное подозрение, что есть инструмент, специально предназначенный для этой цели; что это может быть?

ответ

0

Я закончил с использованием python-graph. Я также закончил использование argparse для создания интерфейса командной строки, который извлекает некоторые базовые биты информации из документов XML и строит графические изображения в форматах, поддерживаемых pydot. Он называется xmlearn и является своего рода полезным:

usage: xmlearn [-h] [-i INFILE] [-p PATH] {graph,dump,tags} ... 

optional arguments: 
    -h, --help   show this help message and exit 
    -i INFILE, --infile INFILE 
         The XML file to learn about. Defaults to stdin. 
    -p PATH, --path PATH An XPath to be applied to various actions. 
         Defaults to the root node. 

subcommands: 
    {graph,dump,tags} 
    dump    Dump xml data according to a set of rules. 
    tags    Show information about tags. 
    graph    Build a graph from the XML tags relationships. 

 Смежные вопросы

  • Нет связанных вопросов^_^