解决xml中&符号"&"输入问题的一个思路

本文探讨了在使用UTF-8编码将包含特殊字符“&”的文本通过XML格式存储到数据库时遇到的问题。当使用标准输入方法“&”时,存储和检索过程中该字符被错误地转换为“&”。为解决这一问题,提出了使用“&”进行输入的方法,确保了数据的一致性和正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  utf-8的内容,我输入&采取标准输法"&",节过通过xml存入数据库后,直接变成了"&", 而从数据库取出时,也是"&",而不是输入的"&",于是采用"&"方式输入, 输出就是"&";了.搞定!
// 修复HTML文档使其符合XML规范: QString TriopticsParser::preprocessHtmlForXml(const QString & html) { QString result = html; // 将所有标签都统一小写,请完善 // 移除<html>标签卡面的申明<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> int index = result.indexOf("<html>"); result = result.remove(0, index); // 1. 修复字符集声明 result.replace("charset=\n=iso-8859-1", "charset=\"iso-8859-1\""); // 2. 转义URL中的&符号 result.replace(QRegularExpression("href=\"([^\"]*?)(?<!&|<|>|'|")&([^\"]*?)\""), "href=\"\\1&\\2\""); // 3. 修复自闭合标签 QStringList selfClosingTags = { "img", "br", "hr", "meta", "link" }; for (const QString& tag : selfClosingTags) { // 处理有属性的标签 result.replace(QRegularExpression(QString("<%1\\b([^>]*)>").arg(tag), QRegularExpression::CaseInsensitiveOption), QString("<%1\\1/>").arg(tag)); // 处理没有属性的标签 result.replace(QRegularExpression(QString("<%1\\s*>").arg(tag), QRegularExpression::CaseInsensitiveOption), QString("<%1/>").arg(tag)); } // 4. 移除无效的</link>结束标签 result.replace("</link>", ""); // 5. 添加XML声明 if (!result.contains("<?xml")) { result.prepend("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n"); } return result; }
最新发布
07-06
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值