精华内容
下载资源
问答
  • utf8编码的xml文档CMarkup类处理不了

    千次阅读 2006-05-31 14:12:00
    麻烦!!!!!!!!!!!!!!!!那位知道在C++中怎么读取UTF8编码的XML文档
    麻烦!!!!!!!!!!!!!!!!那位知道在C++中怎么读取UTF8编码的XML文档
    展开全文
  • CMarkup字符集问题 daubwu posted @ 2008年9月08日 00:54 in VC with tags XML CMarkup , 38 阅读 CMarkup支持Unicode,_MBCS宏定义。VS默认设置为MBCS宏定义,未设置该...CMarkup在Load时将UTF-8转换ANSI编码格式,


    CMarkup字符集问题

    daubwu posted @ 2008年9月08日 00:54 in VC with tags XML CMarkup , 38 阅读
    CMarkup支持Unicode,_MBCS宏定义。VS默认设置为MBCS宏定义,未设置该宏时为UTF-8编码。
    有 MBCS宏定义,且 打开的文件是UTF-8编码:
    CMarkup在Load时将UTF-8转换ANSI编码格式,所以要在读取的地方设置
    [cpp]  view plain copy
    1. #include <locale.h>  
    2. setlocale(LC_ALL, "");  

    没有MBCS宏定义,且打开的文件是UTF-8编码:
    系统默认将文件按UTF-8格式读入系统中,所以显示的时候要手动将数据转换为ANSI格式的进行显示
    [cpp]  view plain copy
    1. #include <locale.h>  
    2. setlocale(LC_ALL, "");  
    3. strVal = CMarkup::UTF8ToA(strVal);  
    展开全文
  • CMarkup 函数

    2020-02-19 02:40:32
    Load 导入一个XML文件到CMarkup的对象中,并对它进行解析。 SetDoc 从字符串中导入XML数据,并对它解析。 2、输出 Save 将XML数据写入文件中。 GetDoc 将整个XML数据文档作为字符串返回。 3、改变当前位置 ...

    1、初始化
    Load 导入一个XML文件到CMarkup的对象中,并对它进行解析。
    SetDoc 从字符串中导入XML数据,并对它解析。

    2、输出
    Save 将XML数据写入文件中。
    GetDoc 将整个XML数据文档作为字符串返回。

    3、改变当前位置
    FindElem 定位到下一个元素,可能和一个标签名或路径匹配。
    FindChildElem 定位到下一个子元素,匹配元素名或路径。
    FindPrevElem 定位前一个元素,可能和一个标签名或路径匹配。
    FindPrevChildElem 定位前一个子元素,可能匹配标签名。
    FindNode  定位下一个节点,可能和节点类型匹配。
    IntoElem  进入当前主位置的下一级,当前的位置变为父位置。
    OutOfElem 使当前父位置变成当前位置。
    ResetPos 复位当前位置为文档起始位置。
    ResetMainPos 将当前主位置复位为第一个兄弟位置之前。
    ResetChildPos 复位当前子位置到第一个子位置之前。
    4、文档新增
    AddElem 在当前主位置元素或最后兄弟位置之后增加一个元素。
    InsertElem 在当前主位置元素或第一个兄弟位置之前插入一个元素。
    AddChildElem 在当前子位置元素或最后一个子位置之后增加一个元素。
    InsertChileElem 在当前子位置元素或低一个子位置之前插入一个元素。
    AddSubDoc 在当前主位置元素或最后一个兄弟位置之后增加一个子文档。
    InsertSubDoc 在当前主位置元素或第一个兄弟位置之前插入一个子文档。
    AddChildSubDoc 在当前子位置元素或最后一个子位置之后增加子文档。
    InsertChildSubDoc 在当前子位置元素或第一个子位置之前插入一个子文档。
    AddNode 在当前节点之后或父元素内容末尾增加一个节点。
    InsertNode 在当前节点之前或父元素内容开头插入一个节点。
    5、文档中删除
    RemoveElem 删除当前包括子元素的主位置元素
    RemoveChildElem 删除包括当前子元素及其子元素
    RemoveNode 删除当前节点
    RemoveAttrib 删除当前位置元素具体的属性
    RemoveChildAttrib 删除当前子位置元素的某个具体属性
    6、得到值
    GetData 得到当前主位置元素或节点的字符串值
    GetChildData 得到当前子位置元素的字符串值
    GetElemContent 得到当前主位置元素包括其子元素的标记内容字符串值
    GetSubDoc 得到当前主位置元素包括其子元素的文档片断标记字符串值
    GetChildSubDoc 得到当前子位置元素包括其子元素的文档片断标记字符串值
    GetAttrib 得到主位置元素(或正在进行的指令的)某一具体属性字符串值
    GetChildAttrib 得到子位置某一特定属性的字符串值
    GetTagName 得到主位置元素(或正在进行的指令的)标签名称
    GetChildTagName 得到子位置元素的标签名称
    FindGetData 定位到匹配某一具体路径的下一个元素并返回字符串值
    7、设置值
    SetData 设置当前主位置元素或节点的值
    SetChildData 设置当前子位置元素的值
    SetElemContent 设置当前主位置元素的标记内容
    SetAttrib 设置当前主位置元素(或正在进行的指令的)某一具体属性的值
    SetChildAttrib 设置当前子位置元素某一具体属性的值
    FindSetData 定位匹配某一具体路径的下一个元素并设置其值
    8、获取其他信息
    GetAttribName 当过当前位置元素属性的具体索引得到属性名称
    GetNodeType 得到当前节点的节点类型
    GetElemLevel 得到当前主位置的级数
    GetElemFlags 得到当前主位置元素的标志
    SetElemFlags 设置当前主位置元素的标志
    GetOffsets 获得在当前主位置偏移的文档文本
    GetAttribOffsets 获得在当前主位置特定属性便宜的文档文本
    9、保存位置信息
    SavePos 在hash map中使用可选字符串名称保存当前位置
    RestorePos 定位到通过SavePos保存的位置
    SetMapSize 设置SavePos和RestorePos使用的hash map大小
    GetElemIndex 得到当前主位置元素整形索引值
    GotoElemIndex 设置当前主位置元素为给定的整形索引值
    GetChildElemIndex 得到当前子位置元素的整形索引值
    GotoChildElemIndex 设置当前子位置元素为给定的整形索引值
    GetParentElemIndex 获得当前父位置元素的整形索引值
    GotoParentElemIndex 设置当前父位置元素为给定的整形索引值
    GetElemPath 获得表示主位置元素绝对路径的字符串
    GetChildElemPath 获得表示子位置元素的绝对路径的字符串
    GetParentElemPath 获得表示父位置元素的绝对路径的字符串
    10、文档状态
    IsWellFormed 判定文档是否有单一根元素和恰当地包含元素
    GetError 从最后的解析中返回错误(信息)字符串
    GetDocFlags 返回文档标志
    SetDocFlags 设置文档标志
    GetDocElemCount 返回文档中元素的个数
    11、静态的实用函数
    ReadTextFile 读一个文本文件转成字符串
    WirteTextFile 写字符串到文本文件中
    GetDeclareEncoding 从XML声明中得到编码的名字
    EscapeText 返回标记中某一字符的编码
    UnescapeText 返回字符串值得某一特定字符解码
    UTF8ToA 将UTF-8字符转成非Unicode(如ANSI)字符
    AToUTF8 将非Unicode(如ANSI)字符转成UTF-8字符
    UTF16T08 将UTF-16字符转成UTF-8
    UTF8To16 将UTF-8字符转成UTF-16
    EncodeBase64 将二进制数据译成Base64字符串
    DecodeBase64 将Base64字符译成二进制数据


    1、CMarkUp可以解析非.xml结尾的文件,只要解析的格式和文件格式一致!

    2、CMarkUp可以不添加<?xml version=\"1.0\" encoding=\"UTF-8\"?>

    展开全文
  • CMarkup--使用 CMarkup库解析xml文件

    万次阅读 2016-10-25 13:05:15
    《windows客户端开发–使用tinyxml库解析xml文件》今天再介绍另一个强大的操作xml的库:CMarkup Simple C++ performance for text data and XML官网: http://www.firstobject.com/创建一个xml document:CMarkup ...

    之前介绍过tinyxml:
    windows客户端开发–使用tinyxml库解析xml文件

    今天再介绍另一个强大的操作xml的库:

    CMarkup
    Simple C++ performance for text data and XML

    官网:
    http://www.firstobject.com/

    创建一个xml document:

    CMarkup xml;
    xml.AddElem( "ORDER" );
    xml.IntoElem();
    xml.AddElem( "ITEM" );
    xml.IntoElem();
    xml.AddElem( "SN", "132487A-J" );
    xml.AddElem( "NAME", "crank casing" );
    xml.AddElem( "QTY", "1" );

    结果:

    <ORDER>
      <ITEM>
        <SN>132487A-J</SN>
        <NAME>crank casing</NAME>
        <QTY>1</QTY>
      </ITEM>
    </ORDER>

    保存:

    xml.Save( "C:\\Sample.xml" );

    作为字符串返回:

    MCD_STR strXML = xml.GetDoc();

    加载xml:

    xml.Load( "C:\\Sample.xml" );

    得到字符串:

    xml.SetDoc( strXML );

    浏览特定元素:

    xml.FindElem(); // root ORDER element
    xml.IntoElem(); // inside ORDER
    while ( xml.FindElem("ITEM") )
    {
        xml.IntoElem();
        xml.FindElem( "SN" );
        MCD_STR strSN = xml.GetData();
        xml.FindElem( "QTY" );
        int nQty = atoi( MCD_2PCSZ(xml.GetData()) );
        xml.OutOfElem();
    }

    增加元素和属性:

    CMarkup xml;
    xml.AddElem( "ORDER" );
    xml.IntoElem(); // inside ORDER
    for ( int nItem=0; nItem<aItems.GetSize(); ++nItem )
    {
        xml.AddElem( "ITEM" );
        xml.IntoElem(); // inside ITEM
        xml.AddElem( "SN", aItems[nItem].strSN );
        xml.AddElem( "NAME", aItems[nItem].strName );
        xml.AddElem( "QTY", aItems[nItem].nQty );
        xml.OutOfElem(); // back out to ITEM level
    }
    xml.AddElem( "SHIPMENT" );
    xml.IntoElem(); // inside SHIPMENT
    xml.AddElem( "POC" );
    xml.SetAttrib( "type", strPOCType );
    xml.IntoElem(); // inside POC
    xml.AddElem( "NAME", strPOCName );
    xml.AddElem( "TEL", strPOCTel );

    结果:

    <ORDER>
    <ITEM>
    <SN>132487A-J</SN>
    <NAME>crank casing</NAME>
    <QTY>1</QTY>
    </ITEM>
    <ITEM>
    <SN>4238764-A</SN>
    <NAME>bearing</NAME>
    <QTY>15</QTY>
    </ITEM>
    <SHIPMENT>
    <POC type="non-emergency">
    <NAME>John Smith</NAME>
    <TEL>555-1234</TEL>
    </POC>
    </SHIPMENT>
    </ORDER>

    查找元素:

    {
        xml.IntoElem();
        xml.FindElem( "SN" );
        MCD_STR strSN = xml.GetData();
        xml.ResetMainPos();
        xml.FindElem( "QTY" );
        int nQty = atoi( MCD_2PCSZ(xml.GetData()) );
        xml.OutOfElem();
    }
    xml.ResetPos(); // top of document
    xml.FindElem(); // ORDER element is root
    xml.IntoElem(); // inside ORDER
    while ( xml.FindElem("ITEM") )
    {
        xml.FindChildElem( "SN" );
        if ( xml.GetChildData() == strFindSN )
            break; // found
    }

    CMarkup与tinyxml对比
    参考:
    http://blog.csdn.net/suxinpingtao51/article/details/34424539

    在使用tinyxml时,可能会new好多对象,但tinyxml的每个对象,在被释放析构时,会将它下面的所有节点都释放点,如TiXmlDocument 文档对象,我们只需要delete doc即可,若是你还delete pElemRoot; delete pElemData,则在运行时会被二次释放报错。

    尽量不要在xml中使用中文
    TinyXml只认识UTF-8和ISO 8859-1编码, 而不知GB2312为何物, 但事实上你以GB2312在文档中写入中文, 之后可以正确读取, 而且文档在记事本中打开也能显示正确的中文, 其实这是种巧合, 并不是TinyXml支持GB2312了.

    展开全文
  • CMarkup下载地址:http://www.firstobject.com/发现网上有方法很法,我就摘下来了 代码如下://———-UserInfo.xml————– xml version=”1.0″ encoding=”UTF-8″ ?>  <UserID>luo <UserID>lin</UserID>
  • VC解析XML文件的工具有很多,CMarkup, 感谢作者http://canaan.jimdo.com/2009/05/25/vc轻松解析xml文件/ tinyXML,还有IBM...所以就用CMarkup来解析,使用过后,觉得非常不错,使用起来很方便。CMarkup下载地址:htt
  • CMarkUp使用简介

    千次阅读 2016-04-01 11:24:20
    最近正在研究C++下的XML分析工具CMarkup。想在C++下发掘XML的强大,结果却发现建房子你除了需要基本的建设材料外,还需要些而外的工具。不像C#那样,已经打成包供你直接使用了。好在有知道CMarkup这个小型XML的分析...
  • CMarkup类操作XML

    千次阅读 2016-12-01 14:39:16
    转自:http://www.cppblog.com/totti1006/archive/2009/07/27/63672.html ...    首先到http://www.firstobject.com/dn_markup.htm上面下载CMarkup类,将C
  • CMarkup 是被提供用来给c++ 解析和操作 xml文件,或者xml的string流的一种框架。网站是 http://www.firstobject.com/。下载解析之后,主要使用到的,就是,Markup.cpp 和 Markup.h 文件。 一、CMarkup 添加到工程 ....
  • ##µ¼Èë encode_json decode_json use JSON qw/encode_json decode_json/; print "1111111111111111-\$d is $d\n"; sleep(30);... $d = encode_utf8($d); print "2222222222222222-\$d is $d\n"...
  • UTF-8:对于UTF-8文件,这接受和返回UTF-8字符串(确保_MBCS没有被定义) MBCS:对于双字节数据(定义_MBCS),它不与UTF-8兼容. STL:CMarkupSTL类完全没有使用MFC,它的演示要使用STL编译选项。
  • cmarkup是把整个xml文件作为字符串载入内存,再利用字符串类提供的函数进行访问,MFC环境下是利用CString,若不使用MFC,则需要增加编译预定义#define MARKUP_STL以使cmarkup 使用stl的string类 创建xml 第一步:...
  • Cmarkup 使用总结 xml解析

    千次阅读 2014-03-10 21:00:43
    MSXML用起来感觉和tinyxml差不多,在别人的介绍下开始接触了markup;发现用起来超级简单,上手及其快,而且关键是效率也...Cmarkup.Load(str); 2、查找元素(节点)只要记住 Cmarkup.FindElem(str);就OK了; 3
  • CMarkup是一个很优秀的开源的解析XML工具,C++编写的,支持跨平台。源码也只有两个文件,一个.h和一个.cpp文件。 把这两个文件添加到工程中然后编译一下,出现以下错误: 1>C:\Program Files (x86)\Microsoft ...
  • CMarkup11.2及帮助文档

    2010-03-01 02:20:41
    UTF-8:对于UTF-8文件,这接受和返回UTF-8字符串(确保_MBCS没有被定义) MBCS:对于双字节数据(定义_MBCS),它不与UTF-8兼容. STL:CMarkupSTL类完全没有使用MFC,它的演示要使用STL编译选项。
  • VC CMarkup所有方法说明

    2019-09-26 15:50:10
    官网英文原版介绍及方法使用说明: ... ...1、初始化Load 导入一个XML文件到CMarkup的对象中,并对它进行解析。类似C#的Load。SetDoc 从字符串中导入XML数据,并对它解析。类似C#的LoadXml。2、输...
  • CMarkup类简介

    2014-11-23 14:59:48
    CMarkup类简介 Initialization Load: Populates the CMarkup objectfrom a file and parses it. SetDoc: Populates the CMarkup objectfrom a string and parses it. Output Save: Writes the document to file...
  • VC CMarkUP的所有方法

    2020-05-29 10:36:06
    Load 导入一个XML文件到CMarkup的对象中,并对它进行解析。类似C#的Load。 SetDoc 从字符串中导入XML数据,并对它解析。类似C#的LoadXml。 2、输出 Save 将XML数据写入文件中。类似C#的Save。 GetDoc 将整个XML数据...
  • CMarkUp介绍

    2013-12-31 11:16:08
    最近准备写一些xml解析的小程序,开始使用了tinyxml,不过tinyxml不支持Unicode,比较麻烦,后来又使用了CMarkup,找到CMarkup的一些文档,随口阅读的过程翻译之,记如下(P.S. 真正NB的程序员是不是应该自己写个XML...
  • CMarkup概述

    2011-04-02 16:31:00
    CMarkup概述 7.2版本, 2004年9月27日 Markup72.zip 422k 原文出自...关于CMarkup,你可以运行Zip文件右边的例子,如果你愿意,你可以通过看源码,几分钟把它加入到你自己的应用中。 <br
  • UTF8ToA 将UTF-8字符转成非Unicode(如ANSI)字符 AToUTF8 将非Unicode(如ANSI)字符转成UTF-8字符 UTF16T08 将UTF-16字符转成UTF-8 UTF8To16 将UTF-8字符转成UTF-16 EncodeBase64 将二进制数据译成...
  • CMarkup

    2011-03-18 10:15:00
    //将str作为xml文件进行解析     <br /><?xml version="1.0" encoding="utf-8"?> <root> <Item>item</Item> //xml.FindElem("root"); xml.IntoElem(); xml.FindElem
  • 笔记:使用CMarkup读写xml文件

    千次阅读 2017-01-11 17:46:54
    直接上代码: #include "Markup.h"  int main() ...CMarkup xml; // 创建xml文件 xml.SetDoc("\r\n"); xml.AddElem("backGround"); xml.IntoElem(); { xml.AddElem("Logo_1"); xml.IntoElem()
  • CMarkup类的成员函数

    2017-06-28 09:57:16
    研究公司项目源码发现对xml使用极其频繁,无论是界面搭建还是用户配置读取都是对xml文件进行操作,这就涉及到了CMarkup类的频繁使用,特地学习了下。 1、初始化 Load 导入一个XML文件到CMarkup的对象中。 ...
  • CMarkup之成员函数说明

    2016-10-19 15:49:07
    Load 导入一个XML文件到CMarkup的对象中,并对它进行解析。类似C#的Load。 SetDoc 从字符串中导入XML数据,并对它解析。类似C#的LoadXml。 2、输出 Save 将XML数据写入文件中。类似C#的Save。 GetDoc 将...
  • CMarkup库setdoc用法

    千次阅读 2016-03-23 22:07:21
    char strxml[] = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" "<Response>" "<CmdType>Catalog</CmdType>" "<SN>12 </SN >" "<DeviceID>34020000002000000001 </DeviceID >" "<SumNum>19046 ...

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 362
精华内容 144
热门标签
关键字:

cmarkuputf8