xml解析库xerces学习笔记一
来源:互联网 发布:redis存储数据大小 编辑:程序博客网 时间:2024/05/01 20:38
#include <iostream>
using namespace std;
#include <xercesc/util/PlatformUtils.hpp>
#include <xercesc/util/XMLString.hpp>
#include <xercesc/framework/LocalFileFormatTarget.hpp>
#include <xercesc/dom/DOM.hpp>
#pragma comment(lib,"xerces-c_3.lib")
using namespace xercesc;
int main()
{
// 一、xml文档解析之“建立本地XML文件输入数据的方法”
// 初始化XML类
XMLPlatformUtils::Initialize();
// 获取DOM实例
XMLCh tempStr[100];
XMLString::transcode("Range", tempStr, 99);
DOMImplementation* impl = DOMImplementationRegistry::getDOMImplementation(tempStr);
//生成本地文件,已存在的会被清空,不存在的会自动创建
XMLFormatTarget* Targe = NULL;
Targe = new LocalFileFormatTarget( "testXML.xml" );
//输出流指向文件
DOMLSOutput* Output = impl->createLSOutput();
Output->setByteStream( Targe );
//生成序列器
DOMLSSerializer * Serializer = impl->createLSSerializer();
//创建xml文档
XMLString::transcode("root", tempStr, 99);
DOMDocument* doc = impl->createDocument(0, tempStr, 0);
//获取xml文档根节点
DOMElement* root = doc->getDocumentElement();
// 创建文档节点
XMLString::transcode("FirstElement", tempStr, 99);
DOMElement* e1 = doc->createElement(tempStr);
//追加到根节点下面
root->appendChild(e1);
XMLString::transcode("SecondElement", tempStr, 99);
DOMElement* e2 = doc->createElement(tempStr);
XMLCh tempStr1[100];
XMLString::transcode("Name", tempStr1, 99);
XMLCh tempStr2[100];
XMLString::transcode("Value", tempStr2, 99);
e2->setAttribute(tempStr1, tempStr2);
//追加到根节点下面,和e1同级
root->appendChild(e2);
/*
XMLString::transcode("ThreeElement", tempStr, 99);
DOMElement* e3 = doc->createElement(tempStr);
XMLCh tempStr3[100];
XMLString::transcode("SecondElement", tempStr2, 99);
root->insertBefore(e3, e1);
XMLString::transcode("aTextNode", tempStr, 99);
DOMText* textNode = doc->createTextNode(tempStr);
e1->appendChild(textNode);
cout << XMLString::transcode(textNode->getNodeValue()) << endl;
cout << XMLString::transcode(e2->getTagName()) << endl;
//optionally, call release() to release the resource associated with the range after done
DOMRange* range = doc->createRange();
range->release();
//removedElement is an orphaned node, optionally call release() to release associated resource
DOMNode* removedElement = root->removeChild(e2);
removedElement->release();
XMLString::transcode("*", tempStr, 99);
DOMNodeList* nodeList = doc->getElementsByTagName(e1->getTagName());
if (NULL != nodeList)
{
XMLSize_t size = nodeList->getLength();
XMLSize_t szBegin = 0;
for (; szBegin < size; ++szBegin)
{
DOMNode* pDOMNode = nodeList->item(szBegin);
if (NULL != pDOMNode)
{
cout << "pDOMNode->getNodeName() = " << XMLString::transcode(pDOMNode->getNodeName()) << endl;
if (NULL != pDOMNode->getNodeValue())
{
cout << "pDOMNode->getNodeValue() = " << XMLString::transcode(pDOMNode->getNodeValue())<< endl;
}
else
{
cout << "pDOMNode->getNodeValue() is NULL." << endl;
}
}
}
}
*/
//写入到文件
Serializer->write( doc , Output );
delete Targe;
Output->release();
doc->release();
Serializer->release();
XMLPlatformUtils::Terminate();
return 0;
}
using namespace std;
#include <xercesc/util/PlatformUtils.hpp>
#include <xercesc/util/XMLString.hpp>
#include <xercesc/framework/LocalFileFormatTarget.hpp>
#include <xercesc/dom/DOM.hpp>
#pragma comment(lib,"xerces-c_3.lib")
using namespace xercesc;
int main()
{
// 一、xml文档解析之“建立本地XML文件输入数据的方法”
// 初始化XML类
XMLPlatformUtils::Initialize();
// 获取DOM实例
XMLCh tempStr[100];
XMLString::transcode("Range", tempStr, 99);
DOMImplementation* impl = DOMImplementationRegistry::getDOMImplementation(tempStr);
//生成本地文件,已存在的会被清空,不存在的会自动创建
XMLFormatTarget* Targe = NULL;
Targe = new LocalFileFormatTarget( "testXML.xml" );
//输出流指向文件
DOMLSOutput* Output = impl->createLSOutput();
Output->setByteStream( Targe );
//生成序列器
DOMLSSerializer * Serializer = impl->createLSSerializer();
//创建xml文档
XMLString::transcode("root", tempStr, 99);
DOMDocument* doc = impl->createDocument(0, tempStr, 0);
//获取xml文档根节点
DOMElement* root = doc->getDocumentElement();
// 创建文档节点
XMLString::transcode("FirstElement", tempStr, 99);
DOMElement* e1 = doc->createElement(tempStr);
//追加到根节点下面
root->appendChild(e1);
XMLString::transcode("SecondElement", tempStr, 99);
DOMElement* e2 = doc->createElement(tempStr);
XMLCh tempStr1[100];
XMLString::transcode("Name", tempStr1, 99);
XMLCh tempStr2[100];
XMLString::transcode("Value", tempStr2, 99);
e2->setAttribute(tempStr1, tempStr2);
//追加到根节点下面,和e1同级
root->appendChild(e2);
/*
XMLString::transcode("ThreeElement", tempStr, 99);
DOMElement* e3 = doc->createElement(tempStr);
XMLCh tempStr3[100];
XMLString::transcode("SecondElement", tempStr2, 99);
root->insertBefore(e3, e1);
XMLString::transcode("aTextNode", tempStr, 99);
DOMText* textNode = doc->createTextNode(tempStr);
e1->appendChild(textNode);
cout << XMLString::transcode(textNode->getNodeValue()) << endl;
cout << XMLString::transcode(e2->getTagName()) << endl;
//optionally, call release() to release the resource associated with the range after done
DOMRange* range = doc->createRange();
range->release();
//removedElement is an orphaned node, optionally call release() to release associated resource
DOMNode* removedElement = root->removeChild(e2);
removedElement->release();
XMLString::transcode("*", tempStr, 99);
DOMNodeList* nodeList = doc->getElementsByTagName(e1->getTagName());
if (NULL != nodeList)
{
XMLSize_t size = nodeList->getLength();
XMLSize_t szBegin = 0;
for (; szBegin < size; ++szBegin)
{
DOMNode* pDOMNode = nodeList->item(szBegin);
if (NULL != pDOMNode)
{
cout << "pDOMNode->getNodeName() = " << XMLString::transcode(pDOMNode->getNodeName()) << endl;
if (NULL != pDOMNode->getNodeValue())
{
cout << "pDOMNode->getNodeValue() = " << XMLString::transcode(pDOMNode->getNodeValue())<< endl;
}
else
{
cout << "pDOMNode->getNodeValue() is NULL." << endl;
}
}
}
}
*/
//写入到文件
Serializer->write( doc , Output );
delete Targe;
Output->release();
doc->release();
Serializer->release();
XMLPlatformUtils::Terminate();
return 0;
}
0 0
- xml解析库xerces学习笔记一
- XML Xerces c++学习笔记--(一)
- 利用Xerces-c库解析XML
- 利用Xerces-c库解析XML
- xerces dom xml解析
- Xerces解析XML
- Xerces-C++解析XML
- Xerces C++解析XML文档
- Xerces C++解析XML文档
- xerces-c 解析xml schema
- Apache xerces xml解析器
- Xerces 学习笔记
- Xerces C++ 学习笔记
- Xerces C++ 学习笔记
- Xerces C++ 学习笔记
- Xerces C++ 学习笔记
- Xerces C++ 学习笔记
- Xerces C++ 学习笔记
- 关于struts2 2.5.2 的入门 遇到的问题 --总结1
- 继承、多态、封装、抽象类与接口
- CS231n第五课:神经网络2学习记录
- 自己做的购物系统
- POJ 3254 Corn Fields 状态压缩dp入门
- xml解析库xerces学习笔记一
- Quartz 2D编程指南之四:颜色与颜色空间
- CodeForces-710C Magic Odd Square(幻方问题/构造)
- Qt: 配置Qt Creator的调试功能
- 用Gradle建立一个简单的java项目
- POJ(2739)
- c++primer笔记--3.5数组
- c++primer笔记--3.6多维数组
- 方欣科技算法题面试:蛇形矩阵