XPath:带属性的元素使查询无效

时间:2016-11-09 09:11:37

标签: xml xpath qxmlquery

我正在通过<script>查询获取XML文件的XPath元素,一切正常,直到<script>之前的元素中没有属性。

简而言之,这有效:

<?xml version="1.0" encoding="UTF-8"?>
<html>
    <head>
        <script type="text/javascript" id="report-data">
            var templateMetaData =
...

这不是(html具有属性xmlns):

<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <script type="text/javascript" id="report-data">
            var templateMetaData =
...

这是我的疑问:

//script[attribute::id = "report-data"]

我也试过这个:

/html/head/script[attribute::id = "report-data"]

我找不到任何可以帮助我找到解决方案的文件。

我正在使用QXmlQuery来执行查询,代码如下(只是一个测试应用程序):

....
QXmlQuery query(QXmlQuery::XPath20);
query.setFocus(&file);     // the XML file
query.setQuery(queryStr);  // the query

QString values;
if( query.isValid())
{
    QXmlResultItems result;
    query.evaluateTo( &result );
    QXmlItem XmlItem( result.next());
    while( !XmlItem.isNull())
    {
        if( XmlItem.isAtomicValue())
        {
            values.append( XmlItem.toAtomicValue().toString());
            values.append("\n");
        }
        else if( XmlItem.isNode())
        {
            QXmlNodeModelIndex Index = XmlItem.toNodeModelIndex();
            values.append( Index.stringValue());
            values.append("\n");
        }
        XmlItem = result.next();
    }
}
else
{
    QMessageBox::information( parent, "error", QString("invalid query!"));
}
....

欢迎任何帮助。

0 个答案:

没有答案
相关问题