-1

我希望有人能帮助我。

我的问题是我获得了带有 html 实体的 XML,用于特殊字符,例如:

<person>
  <firstname>Max</firstname>
  <lastname>M&uuml;ller</lastname>
</person>
<person>
  <firstname>Bernd</firstname>
  <lastname>Sch&auml;fer</lastname>
</person>

我在 QT 中找不到将“ü”解码为普通“ü”的方法。在 QT-DomTree 中,该实体将位于没有 getter 或其他输出或解析功能的 QDomEntityRefrence 对象中。我使用标准方法来解析 XML 树

QDomDocument doc;
if (!doc.setContent(response, &errors))
return false;

QDomElement const & root = doc.firstChildElement("person");
for (QDomElement xmlPerson= root.firstChildElement("person"); !xmlPerson.isNull(); xmlPerson = xmlPerson.nextSiblingElement("person"))
{
    QDomNodeList personCont = xmlPerson.childNodes();
    PersonObj person;

    for(int i = 0; i < personCont.count(); i++)
    {
        QDomNode itemNode = personCont.at(i);
        if(itemNode.isElement()){
            QDomElement item = itemNode.toElement();
            if(item.tagName() == "firstname")
            {
                person.setFirstname(item.firstChild().text());
            }
            else if(item.tagName() == "lastname")
            {
                addressBook.setLastname(item.firstChild().text());
            }
                ...

结果:

马克斯·米勒

伯恩德·施弗

感谢您的大棚

4

1 回答 1

-1

利用QTextDocument()

QTextDocument doc;
doc.setHtml("Sch&auml;fer");
qDebug()<<doc.toPlainText();

在你的例子中

QTextDocument doc;

switch(item.tagName())
        {
        case "firstname":
            doc.setHtml(item.firstChild().text());
            person.setFirstname(doc.toPlainText());
            break;
        case "lastname":
            doc.setHtml(item.firstChild().text());
            addressBook.setLastname(doc.toPlainText());
            break;
            ...
于 2015-07-14T09:35:37.083 回答