如何载入XML到ListView中
本帖最后由 symb 于 2009-10-16 11:41 编辑比如,我想用新浪的XML文件自动获取到ListView逐条列在表行上
如何编写?
我参考了RSS阅读器,还是没成功!
思路应该是这样子的
1、先自动下载新浪XML文件打开XML,并判断文件是否存在
2、再列入ListView显示,再双击打开新闻。
PS:如果再想加个combo选择不同新闻,如何写
非常感谢NEWX兄 自己顶起来~~ 有没有这方面的能人?先谢谢了~ 本帖最后由 afan 于 2009-10-12 19:37 编辑
用正则或ie.au3操作匹配帖子的标题及链接吧,其它的都好说 本帖最后由 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
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
$utext = $uTemp
msgbox(0,0,"新闻标题:" & $utitle & @CRLF & "新闻内容:" & $utext & @CRLF)
EndIf
Next
WEnd
给个事例,不知是不是这意思,至于XML文件中的节点是怎样的,自己参考后改一下(其实在AU3的英文官方论坛上有很多事例可作参考的:
XML.xml
1111
111111111111
222222
...
newx 发表于 2009-10-12 20:36 http://www.autoitx.com/images/common/back.gif
用_XMLDomWrapper.au3操作确实很便捷,学习中~谢谢 UserInclude早就有了 被大家忽视了 5# newx
方法不错,测试可行。谢谢NEWX兄
但测试用新浪地址打不开。
里面的节点我参考修改了一下,还是不行....
<item>
<title>
<!]>
</title>
<link>http://xxx.xxx.xxxx</link>
<description>
<!]></description>
</item>
完整的新浪XML地址:http://rss.sina.com.cn/news/marquee/ddt.xml 8# symb
$ntitle = _XMLGetValue("/rss/channel/item/title") ;标题
$ntext = _XMLGetValue("/rss/channel/item/description");内容
$nlink = _XMLGetValue("/rss/channel/item/link");链接
#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
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
$utext = $uTemp
msgbox(0,0,"新闻标题:" & $utitle & @CRLF & "新闻内容:" & $utext & @CRLF)
EndIf
Next
WEnd
本帖最后由 symb 于 2009-10-16 11:43 编辑
10# newx
再次感谢NEWX兄~
已成功调试成功!
没想到_xmldomwrapper.au3 这么好使
又想麻烦您了,
如何使用TreeView读取INI去掉|后面的内容并相对应关联到Listview
ini配置
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] = GUICtrlCreateTreeViewItem($IniSection, $TreeView)
$IniKey = IniReadSection($_INI_File, $I)
If @error Then ExitLoop
For $J = 1 To $IniKey
GUICtrlCreateTreeViewItem($IniKey[$J], $_Tree_Item[$I])
Next
GUICtrlSetState($_Tree_Item[$I], BitOR($GUI_EXPAND, $GUI_DEFBUTTON))
Next
自己再顶一下~帮小弟指导指导 只可惜没有listview综合实例可学习....现变得思路有点乱了 使用分割的函数
$Val = IniRead ( "INI文件", "1", "1", "" )
;或者是 $Val = IniRead ( "INI文件", "2", "1", "" )
$Val = StringSplit ($读取的INI文件字段“1”关键字“1”中的内容,"|",1);最后一个参数1表示完整匹配“|”字符
$Val = $Val;内容是“新闻要闻”
$Val = $Val;内容是“http://rss.sina.com.cn/news/marquee/ddt.xml” 再次感谢newx兄
解决方法:
For $I = 1 To 9
$IniSection = IniRead($_INI_File, "Main", $I, "None")
If $IniSection = "None" Then ExitLoop
$_Tree_Item[$I] = GUICtrlCreateTreeViewItem($IniSection, $TreeView)
$IniKey = IniReadSection($_INI_File,$I)
If @error Then ExitLoop
For $J = 1 To $IniKey
;GUICtrlCreateTreeViewItem($IniKey[$J], $_Tree_Item[$I])
;改成
$nIniKey = StringSplit($IniKey[$J],"|",1);==>分割“|”数据
GUICtrlCreateTreeViewItem($nIniKey,$_Tree_Item[$I])
Next
GUICtrlSetState($_Tree_Item[$I], BitOR($GUI_EXPAND, $GUI_DEFBUTTON))
Next
页:
[1]