tinyxml解析内存中的xml字符串
2015-01-14 10:56
561 查看
在解析http数据时,遇到了一串xml格式的数据。我选择tinyxml来解析xml数据,由于要解析的xml数据是以字符串的形式存放在内存里,并不是以xml文件形式存在,这可花了我一番功夫。
要解析的xml数据如下:
要解析的xml数据如下:
string strXml = " \ <?xml version="1.0" ?> \ <object> \ <string name = "id">145678249</string> \ <object name="attrs"> \ <string name="account">zhou</string> \ <array name="to">xia</array> \ <string name="subject">test</string> \ <string name="content">gan</string> \ </object> \ </object> ";对于这种内存中的xml字符串,可以用TiXmlDocument类的Parse()接口来直接解析,如下:
TiXmlDocument *pXml = new TiXmlDocument(); pXml->Parse( strXml.c_str() );调用Parse()后,xml字符串就被解析成xml文档树,可以直接调用tinyxml的相关接口来进行操作了。比较完整的代码如下:
const char *GetXmlValue(TiXmlHandle *pXmlHandle, char *ElementName,
char *ElementAttrName, char *ElementAttrValue)
{
TiXmlElement *pObjElement = pXmlHandle->FirstChild("object").FirstChild("object").ToElement();
TiXmlElement *pElement = NULL;
std::string strAttrValue;
for( pElement = pObjElement->FirstChildElement(ElementName); pElement; pElement = pElement->NextSiblingElement(ElementName) )
{
//获取当前元素的属性值
strAttrValue = pElement->Attribute(ElementAttrName);
if(strAttrValue == ElementAttrValue)
{
//获取当前元素的文本内容
return pElement->GetText();
}
}
return NULL;
}
int main()
{
TiXmlDocument *pXml = new TiXmlDocument(); pXml->Parse( strXml.c_str() );
//用TiXmlHandle类来访问Xml文档树(针对xml字符串)
TiXmlHandle xmlHandle(pXml);
//strUser == "zhou"
string strUser = GetXmlValue(&xmlHandle, "string", "name", "account");
//strTo == "xia"
string strTo = GetXmlValue(&xmlHandle, "string", "name", "to");
//strSub == "test"
string strSub = GetXmlValue(&xmlHandle, "string", "name", "subject");
//strCon == "gan"
string strCon = GetXmlValue(&xmlHandle, "string", "name", "content");
delete pXml;
}
相关文章推荐
- CMarkup与tinyXml直接解析XML字符串
- tinyxml解析内存中的字符串缓冲区
- 使用tinyxml封装或解析xml形式字符串
- CMarkup与tinyXml直接解析XML字符串
- CMarkup与tinyXml直接解析XML字符串
- 解析XML的利器-TinyXML
- java JDOM解析XML字符串(非XML文档)
- 解析 XML 字符串 - 一个跨浏览器的实例
- JS解析XML文件和字符串的跨浏览器实现
- javascript解析返回的xml各式的字符串
- js 解析xml字符串
- 通过dom4j解析xml字符串
- 通过JS解析XML字符串
- java解析xml字符串
- java解析xml字符串
- javascript解析xml字符串的函数
- TinyXML 解析中文XML
- 使用TinyXML解析XML
- js解析一个XML字符串 - 跨浏览器的实例
- 解析XML的利器-TinyXML (转载happykevins)