• 11176阅读
  • 6回复

关于使用QXmlStreamReader读取XML文件。 [复制链接]

上一主题 下一主题
离线午小夜
 

只看楼主 正序阅读 楼主  发表于: 2009-07-03
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
有个问题想请教下大家:                  
.........
<label><div id="city">上海</div></label></a> </td>
........
<tr>
                <td align="center" valign="middle"><a id="url4" href="http://www.weather.com.cn/html/weather/101020100.shtml" target="_blank" class="a_1"><div id="weather1">多云转雷阵雨</div></a></td>
              </tr>
........

以上代码貌似是HTML语句。
在使用QXmlStreamReader  *xsr读取这个文件的时候,我想得到诸如 “上海”, “多云转雷阵雨”等字符时,应该怎么办?
我是用以下语句来获取的:
前面定义了一个QXmlStreamReader  *m_xml;
在parseXML( )函数中:
if(m_xml->attributes().value("id") == "city")
            city = m_xml->readElementText();
可是用Debug测试后发现,QXmlStreamReader不太智能,没有将所有节点读取完就认为结束,然后退出了。测试只读了5个节点。源码在 weather_1.rar (820 K) 下载次数:57 这里。
可能问题有点白痴,希望各位达达赐教!谢谢。
楼下为HTML代码。红色部分为我需要提取的内容。
        
[ 此帖被午小夜在2010-04-09 09:43重新编辑 ]
[操作系统版本]  Windows XP;Linux Ubuntu;Linux Fedora;
[Qt SDK版本]    4.7.0
[SDK 发布日期]  2010.05
[IDE(集成开发环境)] QtCreator
个人网页:http://hi.baidu.com/午小夜
學歷:Royal Jalidon
离线nannan
只看该作者 6楼 发表于: 2010-04-09
我试了你的代码,怎么一个都解析不了呢?
离线午小夜

只看该作者 5楼 发表于: 2009-07-05
引用第4楼machou于2009-07-04 17:32发表的  :
好像不能这样读HTML吧,QXmlStreamReader是用来读取XML的,你那样肯定会出错了

确实出错了,测试的时候,我要提取的中文信息全都不显示。感觉和div有关系,其他不需要的中文信息都能显示。中邪了。。。
[操作系统版本]  Windows XP;Linux Ubuntu;Linux Fedora;
[Qt SDK版本]    4.7.0
[SDK 发布日期]  2010.05
[IDE(集成开发环境)] QtCreator
个人网页:http://hi.baidu.com/午小夜
學歷:Royal Jalidon
离线machou

只看该作者 4楼 发表于: 2009-07-04
好像不能这样读HTML吧,QXmlStreamReader是用来读取XML的,你那样肯定会出错了
离线午小夜

只看该作者 3楼 发表于: 2009-07-03
引用第2楼gvim于2009-07-03 13:40发表的  :
text() 吧?

是m_xml->readElementText( ). 可是,现在又出现了个新问题。那个HTML文件不太符合XML标准,读取了5个节点就认为结束了。。。
[操作系统版本]  Windows XP;Linux Ubuntu;Linux Fedora;
[Qt SDK版本]    4.7.0
[SDK 发布日期]  2010.05
[IDE(集成开发环境)] QtCreator
个人网页:http://hi.baidu.com/午小夜
學歷:Royal Jalidon
离线gvim
只看该作者 2楼 发表于: 2009-07-03
text() 吧?
Qt,Qt! 分享Cute之Qt体验
欢迎访问 http://www.cuteqt.com
欢迎订阅 http://www.cuteqt.com/?feed=rss2

离线午小夜

只看该作者 1楼 发表于: 2009-07-03
HTML代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="WT.cg_n" content="weather">
    <title>中国天气网-天气模块5</title>
    <script type="text/javascript" language="javascript" src="/js/cookie.js">
    </script>
    <style type="text/css">
        <!--
        .STYLE2 {color: #0066FF;}
        body {font:12px Verdana, Arial, "宋体"; color:#000; text-align:center;margin:0;}
        div { border:#FF0000 0px solid;}
        img {border:0}
        td { font-size:12px; font-family:Verdana, Arial, "宋体";}
        .a_1 {color: #000; text-decoration:none;}
        .a_1:hover {color:#000; text-decoration:none;}
        -->
    </style>
    <script language="JavaScript" type="text/JavaScript">
        <!--
        function MM_jumpMenu(targ,selObj,restore){ //v3.0
          eval(targ+".location='/m/p5/weather1.htm?id="+selObj.options[selObj.selectedIndex].value+"T'");
          if (restore) selObj.selectedIndex=0;
        }
        //-->
    </script>
</head>
<body>
<table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
    <tbody><tr>
      <td height="28" align="left" valign="top" background="/img/titbg.gif" bgcolor="#FFFFFF"><table width="100%" height="30" border="0" cellpadding="0" cellspacing="0">
        <tbody><tr>
          <td width="16"></td>
          <form action="" method="post" name="form1" id="form2" form="form"></form>
            <td align="center"><a id="url1" href="http://www.weather.com.cn/html/weather/101020100.shtml" target="_blank" class="a_1">
              
            <label><div id="city">上海</div></label></a> </td>
          <td><select name="select2" onchange="MM_jumpMenu('this',this,0)">
            <option value="选择城市" selected="selected">选择城市</option>
            <option value="101010100">北京</option>
            <option value="101020100">上海</option>
            <option value="101030100">天津</option>
            <option value="101280101">广州</option>
            <option value="101280601">深圳</option>
            <option value="101040100">重庆</option>
            <option value="101200101">武汉</option>
            <option value="101090101">石家庄</option>
            <option value="101100101">太原</option>
            <option value="101080101">呼和浩特</option>
            <option value="101070101">沈阳</option>
            <option value="101060101">长春</option>
            <option value="101050101">哈尔滨</option>
            <option value="101190101">南京</option>
            <option value="101210101">杭州</option>
            <option value="101220101">合肥</option>
            <option value="101230101">福州</option>
            <option value="101240101">南昌</option>
            <option value="101120101">济南</option>
            <option value="101180101">郑州</option>
            <option value="101250101">长沙</option>
            <option value="101300101">南宁</option>
            <option value="101310101">海口</option>
            <option value="101270101">成都</option>
            <option value="101260101">贵阳</option>
            <option value="101290101">昆明</option>
            <option value="101110101">西安</option>
            <option value="101160101">兰州</option>
            <option value="101150101">西宁</option>
            <option value="101170101">银川</option>
            <option value="101140101">拉萨</option>
            <option value="101130101">乌鲁木齐</option>
            <option value="101320101">香港</option>
            <option value="101330101">澳门</option>
            <option value="101340102">台北</option>
          </select></td>
          
            <td>           </td>
        </tr>
      </tbody></table>
      </td>
    </tr>
    <tr>
      <td height="100" align="left" valign="top" bgcolor="#FFFFFF"><table width="100%" height="100" border="0" cellpadding="0" cellspacing="0">
        <tbody><tr>
          <td width="9"> </td>
          <td valign="top" width="119px"><table width="100%" height="100" border="0">
              <tbody><tr>
                <td align="center" valign="middle"><a id="url2" href="http://www.weather.com.cn/html/weather/101020100.shtml" target="_blank"><img id="big1" src="http://m.weather.com.cn/img/b1.gif" width="50" height="46" border="0"></a> <a id="url3" href="http://www.weather.com.cn/html/weather/101020100.shtml" target="_blank"><img id="big2" src="http://m.weather.com.cn/img/b4.gif" width="50" height="46" border="0"></a></td>
              </tr>
              <tr>
                <td align="center" valign="middle"><a id="url4" href="http://www.weather.com.cn/html/weather/101020100.shtml" target="_blank" class="a_1"><div id="weather1">多云转雷阵雨</div></a></td>
              </tr>
              <tr>
                <td align="center" valign="middle"><a id="url5" href="http://www.weather.com.cn/html/weather/101020100.shtml" target="_blank" class="a_1"><div id="temp1">34℃~25℃</div></a></td>
              </tr>
          </tbody></table></td>
          <td width="1" bgcolor="#999999"></td>
          <td><table width="100%" height="100" border="0">
              <tbody><tr>
                <td width="94%" align="left"><div align="center"><div id="date_y">2009年7月3日</div></div></td>
              </tr>
              <tr>
                <td align="left"><div align="center"><div id="date">闰五月十一</div></div></td>
              </tr>
              <tr>
                <td align="left"><div align="center"><a id="url6" href="http://www.weather.com.cn/html/weather/101020100.shtml" target="_blank" class="a_1"><table width="100%" border="0" cellspacing="4" cellpadding="0">
  <tbody><tr>
    <td width="50" align="right" nowrap="">风力:</td>
    <td align="left"><div id="wd1">北风转南风3-4级</div></td>
  </tr>
</tbody></table></a></div></td>
              </tr>
              <tr>
                <td align="left"><div align="center"><a id="url7" href="http://www.weather.com.cn/html/weather/101020100.shtml" target="_blank"><img src="/img/anniu.gif" border="0"></a></div></td>
              </tr>
          </tbody></table></td><td width="1" bgcolor="#999999"></td>
          <td valign="top"><table width="100%" border="0" cellspacing="6" cellpadding="0">
            <tbody><tr>
              <td width="41%"><span class="STYLE2">穿衣指数</span>:</td>
            <td width="59%" align="left"><a id="url8" href="http://www.weather.com.cn/html/weather/101020100.shtml" target="_blank" class="a_1"><div id="index">炎热</div></a></td>
            </tr>
            <tr>
              <td height="59" colspan="2" valign="top"><span class="STYLE2">生活提示</span><a id="url9" href="http://www.weather.com.cn/html/weather/101020100.shtml" target="_blank" class="a_1">:<div id="index_d">天气炎热,建议着短衫、短裙、短裤、薄型T恤衫、敞领短袖棉衫等清凉夏季服装。</div></a></td>
            </tr>
          </tbody></table></td>
        </tr>
      </tbody></table></td>
    </tr>
</tbody></table>
<script type="text/javascript" src="/js/new.js"></script><script type="text/javascript" src="http://61.4.185.48:81/g/"></script>
<!-- START WRating v1.0 -->
<script type="text/javascript" src="http://c.wrating.com/a1.js">
</script>
<script type="text/javascript">
var vjAcc="860010-2151010100";
var wrUrl="http://c.wrating.com/";
vjTrack("");
</script><div style="display:none"><img src="http://c.wrating.com/a.gif?a=1223e2d291b&t=&i=bec98786.1223e2d291e.0&b=http%3A//m.weather.com.cn/m/p5/weather1.htm&c=860010-2151010100&s=1152x864x32&l=en&z=8&j=0&f=-&ut=30&n=&js=&ck=1" id="wrTagImage" width="1" height="1"></div>
<noscript></noscript>
<!-- END WRating v1.0 -->

</body></html>
[ 此帖被午小夜在2009-07-03 15:08重新编辑 ]
[操作系统版本]  Windows XP;Linux Ubuntu;Linux Fedora;
[Qt SDK版本]    4.7.0
[SDK 发布日期]  2010.05
[IDE(集成开发环境)] QtCreator
个人网页:http://hi.baidu.com/午小夜
學歷:Royal Jalidon
快速回复
限100 字节
 
上一个 下一个