我希望有人可以帮助我。
我的问题是我使用html实体获取XML特殊字符,例如:
<person>
<firstname>Max</firstname>
<lastname>Müller</lastname>
</person>
<person>
<firstname>Bernd</firstname>
<lastname>Schäfer</lastname>
</person>
我发现QT无法将“&amp; uuml”解码为正常的“ü”。在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());
}
...
结果:
Max Mller
Bernd Schfer
感谢你的greate awnsers
答案 0 :(得分:-1)
使用QTextDocument()
QTextDocument doc;
doc.setHtml("Schä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;
...