小编Rou*_*uta的帖子

将QDomElement转换为QString/Container类

假设我们有以下XML文档:

<root>
    <options>
        ...
    </options>
    <children>
        <child name="first">12345</child>
        <child name="second">
            <additionalInfo>abcd</additionalInfo>
    </children>
</root>
Run Code Online (Sandbox Code Playgroud)

我想获得"子"节点的字符串表示并将它们附加到数组中(我不想丢失XML语法,所以.text()不是一个选项).例如,第一个孩子看起来像:

QString child = "<child name="first">12345</child>";
Run Code Online (Sandbox Code Playgroud)

我使用以下代码来获取元素:

QDomDocument doc;
QDomElement element;
element = xml->documentElement();
if(element.isNull() == false)
{
    element = element.firstChildElement("children");
    if(element.isNull()) return;

    element = element.firstChildElement("child");
    while(element.isNull() == false)
    {
        doc = element.toDocument();
        if(doc.isNull() == false)
        {
            // save string into array
            array.append(doc.toString());
        }
        element = element.nextSiblingElement("child");
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是doc.isNull总是返回false(看起来我无法将元素转换为文档).有什么方法可以执行此操作吗?

编辑:

我想补充说QString在这里不是强制性的.基本上任何可以在以后用于检索数据的类都可以(我将保存这些节点并使用它们稍后初始化其他对象).重要的是,即使原始文档被销毁,我也应该能够访问这些值.例如,可以将这些元素直接存储到某个数组(例如QList),以后可以用它来访问它们.

qt qtxml

9
推荐指数
1
解决办法
1万
查看次数

QNetworkRequest和默认SSL配置

我正在使用以下代码与服务器发出HTTPS请求.

QNetworkRequest request;

//request.setSslConfiguration(QSslConfiguration::defaultConfiguration());
request.setUrl(QUrl("https://www.someurl.com/"));

QNetworkReply *reply = manager->get(request);
Run Code Online (Sandbox Code Playgroud)

一切似乎与我的测试服务器上的工作,但我想知道如果要推荐它来设置defaultConfiguration(取消注释第二行)或没有网络API使用SSL时自动检查所有defaultConfigurations?如果它检查,如果我添加一个自定义配置,它也会这样做吗?我的意思是,是否需要将自定义配置附加到默认配置列表中?例如:

QSslConfiguration SslConfiguration(QSslConfiguration::defaultConfiguration());

QList<QSslCertificate> certificates = SslConfiguration.caCertificates();
certificates.append(QSslCertificate::fromData(certificate.toAscii(), QSsl::Pem));
SslConfiguration.setCaCertificates(certificates);

request.setSslConfiguration(SslConfiguration);
Run Code Online (Sandbox Code Playgroud)

编辑:我想补充一点,我正在使用Symbian平台.

ssl qt qnetworkaccessmanager qnetworkrequest

8
推荐指数
1
解决办法
1万
查看次数

附加指向QList的指针

我需要将类的指针(从QObject继承)插入到QList中.我知道可以使用以下语法:

.H

QList<MyObject*> list;
Run Code Online (Sandbox Code Playgroud)

的.cpp

list.append(new MyObject("first", 1));
list.append(new MyObject("second", 2));
...
Run Code Online (Sandbox Code Playgroud)

然后释放内存:

if(!list.isEmpty())
{
    qDeleteAll(list);
    list.clear();
}
Run Code Online (Sandbox Code Playgroud)

这应该是有效的,不会导致任何内存泄漏(据我所知).但是,我需要在将对象添加到集合之前初始化对象.以下代码段是否会导致内存泄漏或悬空指针等错误(我将使用相同的方法删除上面的指针)?

MyObject *obj;

for(i = 0; i < 5; i++)
{   
    obj = new MyObject();
    if(!obj.Init(i, map.values(i)))
    {
        // handle error
    }
    else
    {
        list.append(obj);
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢.

c++ qt pointers qlist

7
推荐指数
1
解决办法
1万
查看次数

标签 统计

qt ×3

c++ ×1

pointers ×1

qlist ×1

qnetworkaccessmanager ×1

qnetworkrequest ×1

qtxml ×1

ssl ×1