LINUX.ORG.RU

Qt и XPath


0

1

«Помогите плиз! Как и кому скормить QString содержащий XML и QString содержащий XPath выражение чтобы получить QString?!»


как-то так:

 QXmlQuery query(QXmlQuery::XSLT20);

QFile src(":/xml/test.xml"); src.open(QIODevice::ReadOnly);

QFile xslt(":/xml/table.xsl"); xslt.open(QIODevice::ReadOnly);

query.setFocus(&src); query.setQuery(&xslt);

QString str; query.evaluateTo(&str); return str;

unC0Rr ★★★★★
()
Ответ на: комментарий от unC0Rr

тут правда девайсы, а не строки. Но это не составляет проблемы

unC0Rr ★★★★★
()
Ответ на: комментарий от quest

Всем спасибо разобрался! По поводу xpath там все аналогично! только выбрать надо [code=c++] QXmlQuery query(QXmlQuery::XPath20)[[/code]]

Den123
() автор топика

то-же пробую разобраться с этим:


[code=cpp]
QString xml = «<?xml version=\„1.0\“ encoding=\„UTF-8\“ ?><a><b name=\„super\“><c>1991</c></b><b name=\„puper\“><c>2010</c></b></a>»;


QXmlQuery qry(QXmlQuery::XPath20);
qry.setFocus(xml);
qry.setQuery(«/a/b[2]/c/text()»);

if (qry.isValid() == false)
{
printf («ERROR: is invalid\n»); fflush(stdout);
}

QString s;
qry.evaluateTo( &s );
printf(«s:[%s]\n», s.toStdString().c_str()); fflush(stdout);
[/code]

выдает:
s:[2010
]
перенос строки вставляет гадина, да еще и «/a/b[2]/c/text()» не круто хотелось бы «/a/b[@name='super']/c/text()» но так почему то не пашет.
что не так? кроме того как узнать количество элементов <b> в данном xml ?

quest ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.