标签: qxmlquery

Oracle XMLQuery插入不需要的命名空间

Oracle 11.2

下面是XMLQuery我在XMLType列上运行的减少版本.当我运行查询,简单地分析,并重新创建存储XML,则不需要的默认和妾的命名空间插入到了父代的子元素.请注意,tsxm名称空间不会被插入,这是因为它不等于默认名称空间这个查询什么也不做,可以轻松地重写,但真正的(更大)查询使用相同的方法,所以这就是为什么我是以这种格式发布问题.

创建表:

CREATE TABLE XML_DOCUMENT_TMP
(
  DOCUMENT_ID   NUMBER(12)                      NOT NULL,
  XML_DATA      SYS.XMLTYPE                     NOT NULL,
  CREATED_DATE  TIMESTAMP(6)                    NOT NULL
);
Run Code Online (Sandbox Code Playgroud)

插入一些数据(必须按原样配置名称空间):

insert into XML_DOCUMENT_TMP
(document_id,created_date,xml_data)
values(1,sysdate, 
'<patent  xmlns="http://schemas.thomson.com/ts/20041221/tsip" 
    xmlns:tsip="http://schemas.thomson.com/ts/20041221/tsip" 
    xmlns:tsxm="http://schemas.thomson.com/ts/20041221/tsxm"  
    tsip:action="replace" tsip:cc="CA" tsip:se="2715340" tsip:ki="C">
    <accessions tsip:action="replace">
        <accession tsip:src="wila" tsip:type="key">CA-2715340-C</accession>
        <accession tsip:src="tscm" tsip:type="tscmKey">CA-2715340-C-20150804</accession>
    </accessions>
    <claimed tsip:action="replace">
    <    claimsTsxm tsip:lang="en">
            <tsxm:heading tsxm:align="left">We Claim:</tsxm:heading>
            <claimTsxm tsip:no="1" tsxm:num="1" tsip:type="main">1.  power.       </claimTsxm>
      </claimsTsxm>
  </claimed>
</patent>
');
Run Code Online (Sandbox Code Playgroud)

运行XMLQuery:

请注意,此处解释对名称空间通配符的需求

WITH tmpTable …
Run Code Online (Sandbox Code Playgroud)

xml namespaces oracle11g qxmlquery

10
推荐指数
1
解决办法
1098
查看次数

为什么 QXmlQuery 似乎在结果中添加了“\n”?(以及如何解决?)

编写一些代码从 XML 中提取一些值,XPath 的结果似乎添加\n在内容之后。

#include <QCoreApplication>
#include <QXmlQuery>
#include <QString>
#include <QDebug>

auto main(int argn, char* argc[])->int
{
    QCoreApplication app(argn, argc);

    QString replyContent="<Root isOk='ok'/>";

    QXmlQuery query;
    query.setFocus(replyContent);
    query.setQuery("string(//@isOk)");

    // Attribute seem to add \n
    QString queryResult;    
    if (query.evaluateTo(&queryResult))
    {
        qDebug() << queryResult;              // Where this \n come from?
        qDebug() << queryResult.size();       // Why 3? shouldn't be 2?
    }
}
Run Code Online (Sandbox Code Playgroud)

预期结果:

“好的”
2

给出的结果:

“好的\n”
3

这显然有一些我想避免的副作用。

为什么要\n添加这个?以及如何解决呢?

c++ qt xpath qxmlquery

5
推荐指数
1
解决办法
218
查看次数

标签 统计

qxmlquery ×2

c++ ×1

namespaces ×1

oracle11g ×1

qt ×1

xml ×1

xpath ×1