需要帮助解析一个twitter xml文档到VB.NET中的变量?
好吧,我花了一天左右的时间试图让这个工作。我需要解析一个来自twitter的XML文档,选择特定的节点并将值放入变量中。我得到一个错误...从字符串“用户/屏幕名称”转换为键入“整数”无效。解析XML不在我的联盟中。任何帮助将不胜感激...这是我迄今为止。需要帮助解析一个twitter xml文档到VB.NET中的变量?
首先Twitter的XML文件...
<?xml version="1.0" encoding="UTF-8"?>
<statuses type="array">
<status>
<created_at>Sat Apr 30 04:10:46 +0000 2011</created_at>
<id>64179865481510912</id>
<text>@sixrevisions implementing the Twitter API for my new portfolio site!</text>
<source><a href="http://twitter.com/#!/download/iphone" rel="nofollow">Twitter for iPhone</a></source>
<truncated>false</truncated>
<favorited>false</favorited>
<in_reply_to_status_id>64087873804189696</in_reply_to_status_id>
<in_reply_to_user_id>14444403</in_reply_to_user_id>
<in_reply_to_screen_name>sixrevisions</in_reply_to_screen_name>
<retweet_count>0</retweet_count>
<retweeted>false</retweeted>
<user>
<id>92868468</id>
<name>Timothy Antonucci</name>
<screen_name>TimAtWerked</screen_name>
<location>Boston, MA</location>
<description>My name is Tim a web designer/developer in Boston, I love cars and photography ;-)</description>
<profile_image_url>http://a2.twimg.com/profile_images/1336500668/wrkdtwitico_normal.gif</profile_image_url>
<url>http://www.werked.com</url>
<protected>false</protected>
<followers_count>14</followers_count>
<profile_background_color>b2c789</profile_background_color>
<profile_text_color>333333</profile_text_color>
<profile_link_color>0084B4</profile_link_color>
<profile_sidebar_fill_color>b3d6af</profile_sidebar_fill_color>
<profile_sidebar_border_color>6e996a</profile_sidebar_border_color>
<friends_count>34</friends_count>
<created_at>Fri Nov 27 00:35:31 +0000 2009</created_at>
<favourites_count>0</favourites_count>
<utc_offset>-18000</utc_offset>
<time_zone>Eastern Time (US & Canada)</time_zone>
<profile_background_image_url>http://a3.twimg.com/profile_background_images/97017170/1440x900sm.jpg</profile_background_image_url>
<profile_background_tile>true</profile_background_tile>
<profile_use_background_image>true</profile_use_background_image>
<notifications />
<geo_enabled>false</geo_enabled>
<verified>false</verified>
<following />
<statuses_count>39</statuses_count>
<lang>en</lang>
<contributors_enabled>false</contributors_enabled>
<follow_request_sent />
<listed_count>0</listed_count>
<show_all_inline_media>false</show_all_inline_media>
<default_profile>false</default_profile>
<default_profile_image>false</default_profile_image>
<is_translator>false</is_translator>
</user>
<geo />
<coordinates />
<place />
<contributors />
</status>
</statuses>
下一页我的代码......
Dim m_xmld As XmlDocument
Dim m_nodelist As XmlNodeList
Dim m_node As XmlNode
m_xmld = New XmlDocument()
m_xmld.Load("http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=timatwerked&count=4&include_rts=true")
m_nodelist = m_xmld.SelectNodes("/statuses/status")
For Each m_node In m_nodelist
Dim twitName = m_node.ChildNodes.Item("screen_name").InnerText
Dim twitrName = m_node.ChildNodes.Item("name").InnerText
Dim twitText = m_node.ChildNodes.Item("text").InnerText
Dim twitPic = m_node.ChildNodes.Item("profile_image_url").InnerText
Dim twitTime = m_node.ChildNodes.Item("created_at").InnerText
twitPic = twitPic.Replace("normal", "mini")
twitProLink = "http://www.twitter.com/" & twitName
'Do Stuff with variables
Next
行,所以我应该更加重视对错误和Visual Studio。 Item以整数形式检索给定索引处的节点。我正在搜索字符串名称,所以我只是从0开始计算项目,并使用该项目寻找的数字...请参阅下面的代码。
Dim m_xmld As XmlDocument
Dim m_nodelist As XmlNodeList
Dim m_node As XmlNode
m_xmld = New XmlDocument()
m_xmld.Load("http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=timatwerked&count=4&include_rts=true")
m_nodelist = m_xmld.SelectNodes("/statuses/status")
For Each m_node In m_nodelist
Dim twitName = m_node.ChildNodes.Item(11).ChildNodes.Item(2).InnerText
Dim twitrName = m_node.ChildNodes.Item(11).ChildNodes.Item(1).InnerText
Dim twitText = m_node.ChildNodes.Item(2).InnerText
Dim twitPic = m_node.ChildNodes.Item(11).ChildNodes.Item(5).InnerText
Dim twitTime = m_node.ChildNodes.Item(0).InnerText
twitPic = twitPic.Replace("normal", "mini")
twitProLink = "http://www.twitter.com/" & twitName
'Do stuff with variables
Next
现在,这将是一个简单的解决的唯一问题是转推显示不正确,因为节点都是不同的,所以我就加入。如果然后看看是不是那么转推调整节点因此。再次感谢。
我认为你需要
Dim twitName = m_node.ChildNodes.Item("user").ChildNodes.Item("screen_name").InnerText
和类似的东西用于检索其他元素。
非常感谢Bala,它仍然没有使用这种方法...但它确实让我更靠近了一步......更需要信息。再次感谢。我会用我使用的代码发布答案。 – 2011-05-04 13:38:40
你出的解决方案是不是一个很好的解决方案,因为你的代码将打破,如果节点的顺序都没有改变。你所说明的技术被称为“幻数”。使用XPath解析xml对象的更好方法。这样,节点的顺序就无关紧要了。
尝试:
For Each m_node In m_nodelist Dim twitName = m_node.ChildNodes.Item("user").ChildNodes.Item("screen_name").Value 'OtherNodes 'Do stuff with variables Next
的innerText假定您设置或获取项目有子。值只抓取没有孩子假定的物品的价值,而BalaR Stated则是通过名称引用物品,所以如果twitter API更新你的索引指针将被重新计算。
好吧没有问题的想法我回答了我自己的问题,因为它的工作现在只是发布了解决方案,我发现作为答案,以便其他人可以看到我如何解决它,它不是更多的细节或另一个问题,它是解决我的问题的答案 – 2011-05-05 13:16:47
现在,如果你想发布你的问题的答案,那就不一样了。随意补充一点。但是,如果您需要更详细地更新您的问题,请在将来编辑。谢谢。 – Will 2011-05-05 13:22:12