找回密码
 加入
搜索
查看: 3051|回复: 14

如何载入XML到ListView中

[复制链接]
发表于 2009-10-11 21:03:49 | 显示全部楼层 |阅读模式
本帖最后由 symb 于 2009-10-16 11:41 编辑

比如,我想用新浪的XML文件自动获取到ListView逐条列在表行上
如何编写?
我参考了RSS阅读器,还是没成功!
思路应该是这样子的
1、先自动下载新浪XML文件打开XML,并判断文件是否存在
2、再列入ListView显示,再双击打开新闻。
PS:如果再想加个combo选择不同新闻,如何写

非常感谢NEWX兄
 楼主| 发表于 2009-10-12 12:09:13 | 显示全部楼层
自己顶起来~~
 楼主| 发表于 2009-10-12 17:59:25 | 显示全部楼层
有没有这方面的能人?先谢谢了~
发表于 2009-10-12 18:02:02 | 显示全部楼层
本帖最后由 afan 于 2009-10-12 19:37 编辑

用正则或ie.au3操作匹配帖子的标题及链接吧,其它的都好说
发表于 2009-10-12 20:36:52 | 显示全部楼层
本帖最后由 newx 于 2009-10-12 20:41 编辑

给个事例,不知是不是这意思,至于XML文件中的节点是怎样的,自己参考后改一下(其实在AU3的英文官方论坛上有很多事例可作参考的:
XML.xml
<news>
   <item>
      <title>1111</title>
      <text>111111111111</text>
   </item>
   <item>
      <title>222222</title>
      <text>222222222222</text>
   </item>
</news>
GUI
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <_XMLDomWrapper.au3>
#include <GUIListView.au3>

#Region ### START Koda GUI section ### Form=
Local $msg

$Form1 = GUICreate("Form1", 595, 267, 196, 124)
$nTEMP = "XML.xml" ;可以是http://新浪的XML文件地址
_XMLFileOpen($nTEMP) ;打开XML文件
$ListView1 = GUICtrlCreateListView(" |新闻标题|新闻内容", 32, 32, 529, 201)
$ntitle = _XMLGetValue("/news/item/title")
$ntext = _XMLGetValue("/news/item/text")

Local $MyClick[UBound($ntitle)]

For $k = 1 To UBound($ntitle)-1
   $MyClick[$k] = GUICtrlCreateListViewItem($k&"|"&$ntitle[$k]&"|"&$ntext[$k], $ListView1)
Next

GUISetState(@SW_SHOW)

GUISetState(@SW_SHOW)

While True
   $MSG = GUIGetMsg()
   Switch $MSG
      Case $GUI_EVENT_CLOSE
         Exit
   EndSwitch
   For $k = 1 To _GUICtrlListView_GetItemCount($ListView1)
      If $MSG = $MyClick[$k] Then
         $uTemp = StringSplit(GUICtrlRead(GUICtrlRead($ListView1)),"|")
         $utitle = $uTemp[2]
         $utext = $uTemp[3]
         msgbox(0,0,"新闻标题:" & $utitle & @CRLF & "新闻内容:" & $utext & @CRLF)
      EndIf
   Next
WEnd

评分

参与人数 1金钱 +10 贡献 +20 收起 理由
afan + 10 + 20

查看全部评分

发表于 2009-10-12 21:27:34 | 显示全部楼层
给个事例,不知是不是这意思,至于XML文件中的节点是怎样的,自己参考后改一下(其实在AU3的英文官方论坛上有很多事例可作参考的:
XML.xml

   
      1111
      111111111111
   
   
      222222
     ...
newx 发表于 2009-10-12 20:36


用_XMLDomWrapper.au3操作确实很便捷,学习中~谢谢
发表于 2009-10-12 22:42:44 | 显示全部楼层
UserInclude早就有了 被大家忽视了
 楼主| 发表于 2009-10-12 23:40:47 | 显示全部楼层
5# newx

方法不错,测试可行。谢谢NEWX兄
但测试用新浪地址打不开。
里面的节点我参考修改了一下,还是不行....
<item>
<title>
<![CDATA[标题-xxxxx]]>       
</title>               
<link>http://xxx.xxx.xxxx</link>
<description>
<![CDATA[内容-xxxx]]></description>
</item>

完整的新浪XML地址:http://rss.sina.com.cn/news/marquee/ddt.xml
发表于 2009-10-13 09:19:49 | 显示全部楼层
8# symb


$ntitle = _XMLGetValue("/rss/channel/item/title") ;标题
$ntext = _XMLGetValue("/rss/channel/item/description");内容
$nlink = _XMLGetValue("/rss/channel/item/link");链接
发表于 2009-10-13 10:12:34 | 显示全部楼层
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <_XMLDomWrapper.au3>
#include <GUIListView.au3>

#Region ### START Koda GUI section ### Form=
Local $msg

$Form1 = GUICreate("Form1", 595, 267, -1, -1)
$nTEMP = "http://rss.sina.com.cn/news/marquee/ddt.xml"
_XMLFileOpen($nTEMP) ;打开XML文件
$ListView1 = GUICtrlCreateListView(" |新闻标题|新闻内容", 32, 32, 529, 201)
$ntitle = _XMLGetValue("/rss/channel/item/title")
$ndescription = _XMLGetValue("/rss/channel/item/description")

Local $MyClick[UBound($ntitle)]

For $k = 1 To UBound($ntitle)-1
   $MyClick[$k] = GUICtrlCreateListViewItem($k&"|"&$ntitle[$k]&"|"&$ndescription[$k], $ListView1)
Next

GUISetState(@SW_SHOW)

While True
   $MSG = GUIGetMsg()
   Switch $MSG
      Case $GUI_EVENT_CLOSE
         Exit
   EndSwitch
   For $k = 1 To _GUICtrlListView_GetItemCount($ListView1)
      If $MSG = $MyClick[$k] Then
         $uTemp = StringSplit(GUICtrlRead(GUICtrlRead($ListView1)),"|")
         $utitle = $uTemp[2]
         $utext = $uTemp[3]
         msgbox(0,0,"新闻标题:" & $utitle & @CRLF & "新闻内容:" & $utext & @CRLF)
      EndIf
   Next
WEnd

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2009-10-13 18:07:28 | 显示全部楼层
本帖最后由 symb 于 2009-10-16 11:43 编辑

10# newx


再次感谢NEWX兄~
已成功调试成功!
没想到_xmldomwrapper.au3 这么好使

又想麻烦您了,
如何使用TreeView读取INI去掉|后面的内容并相对应关联到Listview

ini配置
[Main]
1=新浪新闻

[1]
1=新闻要闻|http://rss.sina.com.cn/news/marquee/ddt.xml
2=国内要闻|http://rss.sina.com.cn/news/china/focus15.xml

For $I = 1 To 9
    $IniSection = IniRead($_INI_File, "Main", $I, "None")
    If $IniSection = "None" Then ExitLoop
       $_Tree_Item[$I][0] = GUICtrlCreateTreeViewItem($IniSection, $TreeView)
       $IniKey = IniReadSection($_INI_File, $I)
       If @error Then ExitLoop
                For $J = 1 To $IniKey[0][0]
            GUICtrlCreateTreeViewItem($IniKey[$J][1], $_Tree_Item[$I][0])
        Next
        GUICtrlSetState($_Tree_Item[$I][0], BitOR($GUI_EXPAND, $GUI_DEFBUTTON))
Next

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2009-10-14 16:31:03 | 显示全部楼层
自己再顶一下~帮小弟指导指导
 楼主| 发表于 2009-10-15 00:03:34 | 显示全部楼层
只可惜没有listview综合实例可学习....现变得思路有点乱了
发表于 2009-10-15 23:56:59 | 显示全部楼层
使用分割的函数
$Val = IniRead ( "INI文件", "1", "1", "" )
;或者是 $Val = IniRead ( "INI文件", "2", "1", "" )
$Val = StringSplit ($读取的INI文件字段“1”关键字“1”中的内容,"|",1);最后一个参数1表示完整匹配“|”字符
$Val = $Val[1];内容是“新闻要闻”
$Val = $Val[2];内容是“http://rss.sina.com.cn/news/marquee/ddt.xml
 楼主| 发表于 2009-10-16 11:46:42 | 显示全部楼层
再次感谢newx兄
解决方法:
For $I = 1 To 9
    $IniSection = IniRead($_INI_File, "Main", $I, "None")
    If $IniSection = "None" Then ExitLoop
       $_Tree_Item[$I][0] = GUICtrlCreateTreeViewItem($IniSection, $TreeView)
          
       $IniKey = IniReadSection($_INI_File,$I)
       If @error Then ExitLoop
                For $J = 1 To $IniKey[0][0]
                      ;GUICtrlCreateTreeViewItem($IniKey[$J][1], $_Tree_Item[$I][0])
                      ;改成
                      $nIniKey = StringSplit($IniKey[$J][1],"|",1);==>分割“|”数据
                      GUICtrlCreateTreeViewItem($nIniKey[1],$_Tree_Item[$I][0])
        Next
        GUICtrlSetState($_Tree_Item[$I][0], BitOR($GUI_EXPAND, $GUI_DEFBUTTON))
Next
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2025-1-12 13:15 , Processed in 0.083858 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表