免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2261 | 回复: 4
打印 上一主题 下一主题

[C++] repidxml 查找子节点里面的内容。搞不定了 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-07-16 10:18 |只看该作者 |倒序浏览
试了很久,也看了他的文档,就是没找到怎么弄。。。

<httpup>
    <opstatus>审计操作结果</opstatus>   
    <!--protodata表示应用协议的xml数据-->
    <protodata>
        <domain></domain>
        <url></url>
        <subject>主题</subject>
        <summary>内容摘要</summary>
        <!--content表示浏览内容或者发帖内容-->
        <content>内容</content>
        <file_name>文件名称</file_name>        
    </protodata>
    <log_time>日志时间</log_time>   
</httpup>

上面这个XML结构

我在查找 httpup 的子节点的内容的时候很正常 比如 opstatus

但是在查找 protodata 里面的子节点始终找不到,不知道为什么.


st_XMLDoc.parse<0>(ptszBuffer);

    xml_node<> *pSt_XMLNode = st_XMLDoc.first_node();
    if (NULL == pSt_XMLNode)
    {
        return FALSE;
    }
    xml_node<> *pSt_XMLSubNode = pSt_XMLNode->first_node("protodata");
    if (NULL == pSt_XMLSubNode)
    {
        return FALSE;
    }
    printf("%s,%d\n",pSt_XMLSubNode->value(),pSt_XMLSubNode->value_size());      
     //为什么这里什么都打印不出来? 这里不是应该打印
        <domain></domain>
        <url></url>
        <subject>主题</subject>
        <summary>内容摘要</summary>
        <!--content表示浏览内容或者发帖内容-->
        <content>内容</content>
        <file_name>文件名称</file_name>      

这些内容么。

xml_node<> *pSt_XMLElement = pSt_XMLSubNode->first_node("domain");  这里后面的代码全部是错了的。怎么进入 protodata的子节点获取他们的内容
         

论坛徽章:
0
2 [报告]
发表于 2013-07-16 10:49 |只看该作者
找到问题了。。。

rapidxml 不支持  <![CDATA[]] 标记?只要加了就打印不出来。。。为什么? 这个标记难道不是很重要的么?
而且也没法获取 一个节点名下面的所有内容  比如 protodata
通过value 取不出来
<domain></domain>
        <url></url>
        <subject>主题</subject>
        <summary>内容摘要</summary>
        <!--content表示浏览内容或者发帖内容-->
        <content>内容</content>
        <file_name>文件名称</file_name>       这些内容

我晕了,简直郁闷惨了

论坛徽章:
0
3 [报告]
发表于 2013-07-16 10:59 |只看该作者
文档上面明明有 CDATA 节点说明,但是我加上CDATA,VALUE 为空,取消就正常了

论坛徽章:
0
4 [报告]
发表于 2013-07-16 11:02 |只看该作者
<httpup><probe_id>001517163328</probe_id><src_mac>7845C42970DC</src_mac><dst_mac>001C54096111</dst_mac><src_ip>192.168.16.230</src_ip><dst_ip>124.225.214.205</dst_ip><ip_version>0</ip_version><ip_tunnel>0</ip_tunnel><src_port>56152</src_port><dst_port>80</dst_port><proto_type>2</proto_type><proto_sub_type>201</proto_sub_type><log_type>0</log_type><log_level>1</log_level><rule_id></rule_id><group_id></group_id><rulekeyword></rulekeyword><operation>9</operation><opstatus>1</opstatus><protodata><domain><![CDATA[bbs.tianya.cn]]></domain><url><![CDATA[bbs.tianya.cn/api?method=bbs.ice.reply]]></url><subject><![CDATA[哎!发早了谁的撒旦撒旦]]></subject><summary><![CDATA[]]></summary><content><![CDATA[哎!发早了谁的撒旦撒旦]]></content><file_name><![CDATA[]]></file_name></protodata><log_time>1373880442</log_time></httpup>

论坛徽章:
0
5 [报告]
发表于 2013-07-16 11:20 |只看该作者
我X 既然当成一个节点来处理,郁闷
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP