Qt生成XML文件

QString filename = QFileDialog::getSaveFileName( this, "Save", "", "*.xml" );  
  
QFile file( filename );  
if( !file.open(QIODevice::WriteOnly | QIODevice::Text) )  
{  
    return;  
}  
  
QDomDocument document;  
  
QString strHeader( "version=\"1.0\" encoding=\"UTF-8\"" );  
document.appendChild( document.createProcessingInstruction("xml", strHeader) );  
  
QDomElement root_elem = document.createElement( "items" );  
root_elem.setAttribute( "id", 1 );  
document.appendChild( root_elem );  
  
QDomElement item1 = document.createElement( "item" );  
item1.setAttribute( "src", "<>" );  
item1.setAttribute( "dst", "<>" );  
root_elem.appendChild( item1 );  
  
QDomElement item2 = document.createElement( "item" );  
item2.setAttribute( "src", ""'&" );  
item2.setAttribute( "dst", "\"'&" );  
root_elem.appendChild( item2 );  
  
QDomElement item3 = document.createElement( "item" );  
item3.setAttribute( "src", tr("测试数据") );  
item3.setAttribute( "dst", tr("一二三四") );  
root_elem.appendChild( item3 );  
  
QTextStream out( &file );  
document.save( out, 4 );  
file.close(); 

### 如何使用 Qt 创建和生成 XML 文件Qt 中,可以利用 DOM 方法来创建和管理 XML 文件。以下是详细的介绍以及代码示例。 #### 使用 QDomDocument 类创建 XML 文档 `QDomDocument` 是 Qt 提供的一个类,用于表示整个 XML 文档对象模型 (DOM)[^1]。通过该类,开发者能够轻松地构建、修改并保存 XML 数据结构。 下面是一个完整的例子,展示如何使用 `QDomDocument` 来创建一个新的 XML 文件: ```cpp #include <QDomDocument> #include <QFile> #include <QString> void createXmlFile(const QString &filePath) { // 创建一个 QDomDocument 对象 QDomDocument document; // 创建根节点 QDomElement root = document.createElement("Root"); document.appendChild(root); // 创建子节点 QDomElement childNode = document.createElement("Child"); // 设置属性给子节点 childNode.setAttribute("name", "Example"); // 给子节点设置文本内容 QDomText textNode = document.createTextNode("This is a test content."); childNode.appendChild(textNode); // 将子节点附加到根节点下 root.appendChild(childNode); // 保存文档至指定路径 QFile file(filePath); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { qWarning() << "Cannot open file for writing:" << filePath; return; } QTextStream out(&file); document.save(out, 4); // 缩进级别为 4 file.close(); } ``` 此函数会生成如下所示的 XML 文件: ```xml <Root> <Child name="Example">This is a test content.</Child> </Root> ``` 以上过程涵盖了从初始化 `QDomDocument` 到最终写入磁盘的操作[^1]。 #### 关键点解释 - **QDomDocument**: 表示整个 XML 文档的对象。 - **createElement 和 setAttribute**: 这些方法分别用来创建新的标签元素及其属性。 - **createTextNode**: 此方法负责向某个特定节点添加纯文本内容。 - **appendChild**: 把新建立好的节点加入父级节点之下形成树状关系。 - **save 函数**: 它允许我们将完成后的 XML 结构序列化成字符串形式,并按照一定缩进格式输出到目标位置。 #### 注意事项 当调用上述功能时,请确保所提供的文件路径有效且应用程序具有足够的权限去访问它;否则可能会抛出异常或者失败警告消息[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值