如何使用 TinyXML 在内存中操作 xml 格式的内容
展开全部
以下为示例代码:分析一段保存在内存中的 xml 内容,buffer 中保存着上面例子的 xml 内容。
void CxmlDlg::ParseXML()
{
char * buffer = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\
<Config>\
<Database ip=\"192.168.1.33\" port=\"3306\" />\
<List>\
<Channel count=\"5\">电视剧</Channel>\
<Channel count=\"5\">电影</Channel>\
</List>\
</Config>";
char utf8[256] = {0};
if( MBSToUTF8( utf8, sizeof(utf8), buffer ) <= 0 ) // 此函数见我之前关于 TinyXML 的文章
return;
TiXmlDocument doc;
doc.Parse(utf8);
TiXmlElement* databaseElement = 0;
TiXmlElement* listElement = 0;
TiXmlElement* channelElement = 0;
TiXmlHandle docHandle( &doc );
databaseElement = docHandle.FirstChild( "Config" ).FirstChild( "Database" ).ToElement();
assert( databaseElement );
// 取得字符串属性的内容
const char * ip = databaseElement->Attribute("ip");
// 取得整型属性的值
int port = 0;
databaseElement->QueryIntAttribute("port", &port );
int count = 0;
char content[32] = {0};
listElement = docHandle.FirstChild( "Config" ).FirstChild( "List" ).ToElement();
assert( listElement );
for( channelElement = listElement->FirstChildElement("Channel"); channelElement; channelElement = channelElement->NextSiblingElement("Channel") )
{
channelElement->QueryIntAttribute("count", &count );
UTF8ToMBS( content, sizeof(content), channelElement->GetText() );
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询