Парсинг больших псевдо-XML-файлов в Python

С тех пор 6.0, Java поддерживает подстановочные пути к классам.

синтаксис пути к классу командной строки Java

6
задан Peter Prettenhofer 2 October 2009 в 11:15
поделиться

4 ответа

http://docs.python.org/library/xml.sax.html

Обратите внимание, что вы можете передать объект 'stream' в xml.sax.parse . Это означает, что вы, вероятно, можете передать любой объект, который имеет файловые методы (например, read ), в вызов parse ... Создайте свой собственный объект, который сначала запустит ваш виртуальный корневой каталог. -tag, затем содержимое файла, затем виртуальный корневой конечный тег. Я предполагаю, что вам нужно реализовать только метод read ... но это может зависеть от синтаксического анализатора sax, который вы будете использовать.

Пример, который работает для меня:

import xml.sax
import xml.sax.handler

class PseudoStream(object):
    def read_iterator(self):
        yield '<foo>'
        yield '<bar>'
        for line in open('test.xml'):
            yield line
        yield '</bar>'
        yield '</foo>'

    def __init__(self):
        self.ri = self.read_iterator()

    def read(self, *foo):
        try:
            return self.ri.next()
        except StopIteration:
            return ''

class SAXHandler(xml.sax.handler.ContentHandler):
    def startElement(self, name, attrs):
        print name, attrs

d = xml.sax.parse(PseudoStream(), SAXHandler())
11
ответ дан 8 December 2019 в 17:23
поделиться

xml.parsers.expat - Быстрый анализ XML с использованием Expat The xml.parsers.expat module is a Python interface to the Expat non-validating XML parser. The module provides a single extension type, xmlparser, that represents the current state of an XML parser. After an xmlparser object has been created, various attributes of the object can be set to handler functions. When an XML document is then fed to the parser, the handler functions are called for the character data and markup in the XML document.

More info : http://www.python.org/doc/2.5/lib/module-xml.parsers.expat.html

1
ответ дан 8 December 2019 в 17:23
поделиться

Добавьте корневой элемент и используйте SAX, STax или VTD-XML ..

1
ответ дан 8 December 2019 в 17:23
поделиться

Быстрый и грязный ответ - это добавление корневого элемента (как String), чтобы он был действительным XML.

С уважением.

1
ответ дан 8 December 2019 в 17:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: