Заранее прошу прощения если не в ту тему. Вопрос хоть и по Qt, но не про GUI.
Научите делать запросы xpath!
Есть xml файл, к которому нужно провести серию запросов.
Ничего толкового сети не нашел…..
from PyQt4 import QtXmlPatterns query = QtXmlPatterns.QXmlQuery() query.setQuery("doc('form.xml')/xfdf/fields") s = query.evaluateToString()
AliasNamelessВот пример рабочего кода:
Что я делаю не так?
>>> from PySide.QtGui import QApllication
>>> from PySide.QtXmlPatterns import QXmlQuery
>>> from PySide.QtCore import QFile, QIODevice
>>> app = QApplication([])
>>> query = QXmlQuery()
>>> query.setQuery("doc('/home/krolik/cd.xml')/CATALOG/CD[1]")
>>> query.isValid()
True
>>> buffer = QFile('/home/krolik/res.xml')
>>> buffer.open(QIODevice.ReadWrite)
>>> query.evaluateTo(buffer)
regallРебята, а в чем преимущество перед lxml.etree ?AliasNamelessВот пример рабочего кода:
Что я делаю не так?>>> from PySide.QtGui import QApllication
>>> from PySide.QtXmlPatterns import QXmlQuery
>>> from PySide.QtCore import QFile, QIODevice
>>> app = QApplication([])
>>> query = QXmlQuery()
>>> query.setQuery("doc('/home/krolik/cd.xml')/CATALOG/CD[1]")
>>> query.isValid()
True
>>> buffer = QFile('/home/krolik/res.xml')
>>> buffer.open(QIODevice.ReadWrite)
>>> query.evaluateTo(buffer)
В файле - нужное поддерево.
Возможно, проблема с кодировками, у меня тестовый файл - чистый латин, но я не уверен.
P.S.
Тестовая XML-ка: http://www.w3schools.com/xml/cd_catalog.xml
Версия PySide - 1.1.1
В PySide.QtXmlPatterns.QXmlQuery - нет метода evaluateToString, так что лил ответ в buffer.