爱乐眼底图像分析

?找回密码
?立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4648|回复: 1
打印 上一主题 下一主题

Xercesc读取xml文件

[复制链接]
跳转到指定楼层
楼主
发表于 2012-8-25 22:06:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本节包含内容:XML文件格式、判断节点类型、取节点名称、取节点值。

XML文件的典型格式,如下

<节点名称1>

??<节点名称1-1? ???属性名1="属性值1?" ?属性名2="属性值2">

<节点名称1-1-1>??

? ? Context? ?

? ?? ?? ?? ???

??

??<节点名称 1-2="">

??

参考Domcount例程,得到DOMNode对象

首先判断DOMNode对象的节点类型、然后,对节点内容和值分别存储。

if (static_cast(n)->getNodeType() == DOMNode::ELEMENT_NODE)

{

? ? //取节点名称。这里取节点值是没有意义的

? ? char *name??= XMLString::transcode(static_cast(n)->getNodeName());

? ???pThis->m_strName??= name; //存放节点名称

? ???XMLString::release(&name);

? ?

? ???//如果本节点有属性,存储属性信息到pThis对象.begin

? ???if(static_cast(n)->hasAttributes()) {

? ?? ?? ?// get all the attributes of the node

? ?? ?? ?DOMNamedNodeMap *pAttributes = static_cast(n)->getAttributes();

? ?? ?? ?const XMLSize_t nSize = pAttributes->getLength();

? ?? ?? ?std::string strKey,strValue;??//用来存放属性名和属性值

? ?? ?? ?for(XMLSize_t i=0;i

? ?? ?? ?? ???DOMAttr *pAttributeNode = (DOMAttr*) pAttributes->item(i);

? ?? ?? ?? ???// get attribute name

? ?? ?? ?? ???char *name = XMLString::transcode(pAttributeNode->getName());

? ?? ?? ?? ?? ?// get attribute type

? ?? ?? ?? ???char *value = XMLString::transcode(pAttributeNode->getValue());

? ?? ?? ?? ???//存放属性名和属性值

? ?? ?? ?? ???strKey = name,strValue=value,pThis->m_mapAttr[strKey]=strValue;

? ?? ?? ?? ???XMLString::release(&name);

? ?? ?? ?? ???XMLString::release(&value);

? ???}

? ???//如果本节点有属性,存储属性信息到pThis对象.end

}

Else if (static_cast(n)->getNodeType() == DOMNode::TEXT_NODE)

{

? ?? ?//节点名为#text的节点,可以取其节点值

? ?? ?//… omit some code …

? ?? ?char *value = XMLString::transcode(static_cast(n)->getNodeValue());

//… omit some code …

}

备注:Xercesc直接支持UTF-8编码的中文。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



QQ|Archiver|手机版|小黑屋|爱乐眼底图像分析 ( 京ICP备1201155号 )????? ?? ??

GMT+8, 2019-10-2 19:08 , Processed in 0.337759 second(s), 27 queries .

Powered by Discuz! X3.1

? 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表