今天才知道CMarkup可以直接解析字符串形式的XML。以前都是先存入一个文件,然后从文件中load。多做了I/O操作,效率不高。
CMarkup xml;
CString str;
xml.SetDoc(str);
tinyXml也可以直接解析XML字符串,方式如下:
constchar*content="<root><elemname=/"aaa/"/></root>";
TiXmlDocument*doc=newTiXmlDocument();
doc->Parse(content);
if(&doc==NULL)
cout<<"doc==NULL"<<endl;
TiXmlHandledocHandle(doc);
TiXmlNode*root=docHandle.FirstChild("root").ToElement();
TiXmlNode*elemNode=root->FirstChild("elem");
TiXmlElement*elemElem=elemNode->ToElement();
cout<<elemElem->Attribute("name");
结果是aaa
分享到:
相关推荐
以下是如何使用tinyxml解析XML能力集的基本步骤: - 引入库文件:在项目中包含`tinystr.h`和`tinyxml.h`。 - 加载XML文件:创建`TiXmlDocument`对象,并调用`LoadFile()`方法加载XML文件。 - 获取根元素:通过`...
本文将重点讨论C++中的一种XML解析工具——Cmarkup类。 Cmarkup类是专门为C++设计的一个轻量级的XML解析库,它允许开发者高效地读取、修改和写入XML文档。Cmarkup通过提供简洁的API接口,使得XML处理变得更加简单...
5. **字符串处理**:CMarkup类提供了对XML字符串的处理能力,包括对XML字符串的编码和解码,以及对XML声明的处理。 6. **MSXML支持**:CMarkup类与Microsoft的MSXML库集成,后者是微软提供的用于处理XML的组件。...
例如,`Init()`方法用于初始化解析器,`SetDoc()`用于加载XML字符串或文件,`FindChild()`则用于查找XML文档中的特定节点。此外,`Element()`和`Attr()`方法分别用于获取当前元素的名称和属性,`GetText()`则用于...
8. **性能考虑**:虽然CMARKUP简单易用,但相比于现代的XML解析库(如TinyXML、pugixml等),它的性能可能较低。在处理大量数据或高并发场景时,可能需要考虑使用更高效的解决方案。 总之,使用CMARKUP遍历XML树...
这段代码首先初始化CMarkup对象,然后解析一个简单的XML字符串。通过FindElem找到名为"elem"的标记,接着添加新的子元素,修改属性,并获取内容。最后,将修改后的XML保存到"modified.xml"文件。 4. **注意事项**...
1. **XML文档加载**:CMarkup提供了Load函数,通过文件路径或内存中的XML字符串加载XML文档。例如,`m_xml.Load("example.xml")`将加载名为"example.xml"的XML文件。 2. **XML解析**:CMarkup能够解析XML文档并创建...
RapidXml的解析过程是递归的,它通过解析XML文档的字符串来创建一棵DOM(Document Object Model)树。使用RapidXml,你可以轻松地遍历DOM树,访问或修改XML元素的属性和内容。以下是一个简单的RapidXml使用示例: `...
在C++编程中,处理XML文件时,我们可能会遇到各种库,如TinyXML、pugixml等,但这里我们讨论的是一个名为`CMarkup`的类,它为XML操作提供了一个简洁易用的接口。 `CMarkup`类的设计目标是简化XML文档的读取、修改和...
5. **保存XML**:修改后的XML文档可以通过Cmarkup类写回到磁盘上,形成一个新的XML文件,或者以字符串形式输出。 6. **错误处理**:在解析过程中,Cmarkup类会检查XML的语法正确性,如果遇到错误,它会提供错误信息...
- **加载XML**:通过LoadFile()或LoadString()函数加载XML文档,前者用于读取文件,后者用于处理内存中的XML字符串。 - **查找标记**:使用FindChild()或FindChildForName()函数寻找指定的子元素。FindChild()基于...