创建xml文件

#include "domxml.h"
#include <QFile>
#include <QDomElement> //元素
#include <QDomProcessingInstruction> //格式头
#include <QIODevice>
#include <QDomDocument> //文件
#include <QTextStream>
#include <QDebug>
#define qout qDebug()<<"["<<__TIME__<< __FUNCTION__ <<":"<< __LINE__<<"]"

const QString ALIAS="alias";
const QString SON_NODE="service";
const QString strHead("version=\‘1.0\‘ encoding=\‘UTF-8\‘");
const QString XML="xml";

DomXml::DomXml()
{

}
void DomXml::createXml(const QString& filePath)
{
QFile file(filePath);
//文件已存在
bool isOk = file.open(QIODevice::WriteOnly);
if(!isOk)
{
return;
}
//xml文本对象
QDomDocument doc;
QDomDocument doc;
//xml头部实例
QDomProcessingInstruction ins;
//<?xml version=‘1.0‘ encoding=‘UTF-8‘?>
ins = doc.createProcessingInstruction(XML,strHead);
//把实例xml头部加到doc对象中
doc.appendChild(ins);
//doc创建根节点元素
QDomElement root = doc.createElement("Nodes");
//把根节点元素加到doc中
doc.appendChild(root);
//file指针指向stream
QTextStream stream(&file);
stream.setCodec("UTF-8");
//将doc保存到文件中
doc.save(stream,4); //4个空格缩进
file.close();
}
QDomElement DomXml::createSonElement(const QString& str,const QMap<QString,QString>& map)
{
QDomDocument doc;
//第一子节点
QDomElement node = createElement(map);
QDomElement alias = doc.createElement(ALIAS);//第二子节点
QDomText text = doc.createTextNode(str);//节点文本
alias.appendChild(text);
node.appendChild(alias);
return node;
}
QDomAttr DomXml::createDomAttr(const QString& attr,const QString& value)
{
QDomDocument doc;
QDomAttr _attr = doc.createAttribute(attr);//属性
_attr.setNodeValue(value);//属性的值
return _attr;
}
QDomElement DomXml::createElement(const QMap<QString,QString>& map)
{
QDomDocument doc;
QDomElement element = doc.createElement(SON_NODE);//节点名

QMap<QString,QString>::const_iterator it=map.constBegin();
for(;it!=map.constEnd();it++)
{
//设属性节点
element.setAttributeNode(createDomAttr(it.key(),it.value()));
}
return element;
}
void DomXml::appendXml(const QString &filePath, const QString &text,const QMap<QString,QString>& map)
{
QFile file(filePath);
QDomDocument doc;
//不存在则创建
if(!file.exists())
{
createXml(filePath);
}
file.open(QIODevice::ReadOnly);
if(!doc.setContent(&file))
{
file.close();
return;
}
file.close();
QDomElement root = doc.documentElement();
//追加子节点
root.appendChild(createSonElement(text,map));
file.open(QIODevice::WriteOnly);
QTextStream stream(&file);
stream.setCodec("UTF-8");
doc.save(stream,4);
file.close();
}
QStringList DomXml::readXmlByAlias(const QString& filePath,const QString& alias)
{
QFile file(filePath);
QDomDocument doc;
QStringList list;
file.open(QIODevice::ReadOnly);
if(!doc.setContent(&file))
{
file.close();
return list;
}
file.close();
QDomElement root = doc.documentElement();
if(!root.hasChildNodes())
{
//没有子节点
return list;
}
QDomNodeList rootList = root.childNodes();
for(size_t i=0;i<rootList.size();i++)
{
QDomElement service = rootList.at(i).toElement();
if(!service.hasChildNodes())
{
continue;
}
if(service.childNodes().at(0).toElement().text()==alias)
{
list << service.attribute(conflg::ATTR_ip);//ip
list << service.attribute(conflg::ATTR_port);//port
list << service.attribute(conflg::ATTR_comm);//comm
return list;
}
}

}
QStringList DomXml::getAliasByreadXml(const QString& filePath)
{
QFile file(filePath);
QStringList list;
if(!file.exists())
{
return list;
}
QDomDocument doc;
file.open(QIODevice::ReadOnly);
if(!doc.setContent(&file))
{
file.close();
return list;
}
file.close();
QDomElement root = doc.documentElement();
if(!root.hasChildNodes())
{
//没有子节点
return list;
}
QDomNodeList rootList = root.childNodes();
for(size_t i=0;i<rootList.size();i++)
{
QDomElement service = rootList.at(i).toElement();
if(!service.hasChildNodes())
{
continue;
}
list << service.childNodes().at(0).toElement().text();//alias
}
return list;
}

时间: 2024-11-22 19:26:26

创建xml文件的相关文章

函数创建XML文件

REPORT  YTST_XML_14. *----------------------------------------------------------------------* * PANTALLA SELECCION * PARAMETERS: GK_RUTA TYPE RLGRAP-FILENAME DEFAULT 'C:\ECC6.XML'. * PANTALLA SELECCION * *---------------------------------------------

C#操作XML学习之创建XML文件的同时新建根节点和子节点(多级子节点)

最近工作中遇到一个问题,要求创建一个XML文件,在创建的时候要初始化该XML文档,同时该文档打开后是XML形式,但是后缀名不是.在网上找了好些资料没找到,只能自己试着弄了一下,没想到成功了,把它记下来作为自己的学习笔记. 需求:创建XML文件,后缀名为.xwsp 初始化的文档节点如下: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <xxxversion="1.0" name="

XML文件操作类--创建XML文件

这个类是在微软XML操作类库上进行的封装,只是为了更加简单使用,包括XML类创建节点的示例. using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml; namespace testForm { class Operation_APPCFG { XmlDocument xmldoc; XmlNode

asp.net创建XML文件方法

方法一:按照XML的结构一步一步的构建XML文档.    通过.Net FrameWork SDK中的命名空间"System.Xml"中封装的各种类来实现的 方法一:按照XML的结构一步一步的构建XML文档.    通过.Net FrameWork SDK中的命名空间"System.Xml"中封装的各种类来实现的 方法二:直接定影XML文档,然后保存到文件.        通过"XmlDocument"类中的"LoadXml"

Android中解析与创建XML文件

Android中解析与创建XML文件 在Android中对XML的操作有多种方式,常见的有三种方式:SAX.DOM和PULL方式. DOM方式会把整个XML文件加载到内存中,在PC上常使用DOM的方式. 但是在性能敏感的设备上,主要采用的是SAX的方式,但是缺点是嵌套多个分支的时候处理不是很方便. 而PULL的方式类似SAX方式,同样很节省内存. 因此,本文章中只提供PULL的方式解析与创建XML文件. 基础类 本例中使用的实体类的定义如下: public class CAddress impl

PHP DOM创建XML文件

    $dom = new DOMDocument ( '1.0', 'gbk' );     $dom->formatOutput = true;     $comment_str = ' file create time: ' . date('Y-m-d H:i:s', time())  . ' by tree.php ';     $dom->appendChild(new DOMComment($comment_str));     $edbnode = $dom->creat

使用DOM创建xml文件

使用DOM创建xml文件 创建xml的代码如下: public class CreateXML { public static void main(String[] args) { DocumentBuilderFactory factory =DocumentBuilderFactory.newInstance(); try { DocumentBuilder builder=factory.newDocumentBuilder(); Document documnet= builder.ne

以DOM方式创建xml文件

有些事,在我这个单纯的人心里一直以为这世界也是单纯的存在.Until that moment, she paid the bill for another boy, I found out that people are together, I am just an outsider.My world is lost.好久没扯皮了,闲扯一下很开心.好了,废话少说,内容都在注释里面. /**以DOM方式创建xml文件 * @param file 文件 * @throws Exception */

dom4j创建xml文件

import java.io.FileWriter; import java.io.IOException; import java.io.Writer; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.XMLWriter; /** * 使用dom4j生成xml文档 * @author Administrator * */ publi

JSP简单练习-使用JDOM创建xml文件

注意:在编写代码前,请确保该Web文件夹下的"WEB-INF/lib"下包括jdom.jar包! <%@ page language="java" contentType="text/html; charset=gb2312" %> <%@ page import="org.jdom.*, org.jdom.output.*, java.io.IOException, java.io.FileWriter"