如何使用 TinyXML 在内存中操作 xml 格式的内容

 我来答
功含苼rd
2015-09-05 · TA获得超过806个赞
知道小有建树答主
回答量:768
采纳率:0%
帮助的人:670万
展开全部

以下为示例代码:分析一段保存在内存中的 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() );  
    }  
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式