2009年08月14日

amazon awsの署名認証

amazon awsで署名認証が導入される

visual basic だと
サンプルがあまりにも少なすぎて

amazon developer communityにようやく一つあるんだけど

VB.NetでAmazon Product Advertising API のSampleにあるように

amazonのサンプルは英語だと動くんだけど
日本語だと

urlencodeがうまくいかなくて
searchIndexをblended以外にして
日本語のキーワードで検索すると

結果がなしになる

なので

上記のサイトをコピペシテ

日本語にも対応させてもらった
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports System.Web
Imports System.Security.Cryptography


Dim MY_AWS_ACCESS_KEY_ID As String = "アクセスキー"
Dim MY_AWS_SECRET_KEY As String = "シークレットキー"
Dim DESTINATION As String = "ecs.amazonaws.jp"


Namespace AmazonProductAdvtApi
Class SignedRequestHelper
Private endPoint As String
Private akid As String
Private secret As Byte()
Private signer As HMAC

Private Const REQUEST_URI As String = "/onca/xml"
Private Const REQUEST_METHOD As String = "GET"

'
' * Use this constructor to create the object. The AWS credentials are available on
' * http://aws.amazon.com
' *
' * The destination is the service end-point for your application:
' * US: ecs.amazonaws.com
' * JP: ecs.amazonaws.jp
' * UK: ecs.amazonaws.co.uk
' * DE: ecs.amazonaws.de
' * FR: ecs.amazonaws.fr
' * CA: ecs.amazonaws.ca
'

Public Sub New(ByVal awsAccessKeyId As String, ByVal awsSecretKey As String, ByVal destination As String)
Me.endPoint = destination.ToLower()
Me.akid = awsAccessKeyId
Me.secret = Encoding.UTF8.GetBytes(awsSecretKey)
Me.signer = New HMACSHA256(Me.secret)
End Sub

'
' * Sign a request in the form of a Dictionary of name-value pairs.
' *
' * This method returns a complete URL to use. Modifying the returned URL
' * in any way invalidates the signature and Amazon will reject the requests.
'

Public Function Sign(ByVal request As IDictionary(Of String, String)) As String
' Use a SortedDictionary to get the parameters in naturual byte order, as
' required by AWS.
Dim pc As New ParamComparer()
Dim sortedMap As New SortedDictionary(Of String, String)(request, pc)

' Add the AWSAccessKeyId and Timestamp to the requests.
sortedMap("AWSAccessKeyId") = Me.akid
sortedMap("Timestamp") = Me.GetTimestamp()

' Get the canonical query string
Dim canonicalQS As String = Me.ConstructCanonicalQueryString(sortedMap)

' Derive the bytes needs to be signed.
Dim builder As New StringBuilder()
builder.Append(REQUEST_METHOD).Append(vbLf).Append(Me.endPoint).Append(vbLf).Append(REQUEST_URI).Append(vbLf).Append(canonicalQS)

Dim stringToSign As String = builder.ToString()
Dim toSign As Byte() = Encoding.UTF8.GetBytes(stringToSign)

' Compute the signature and convert to Base64.
Dim sigBytes As Byte() = signer.ComputeHash(toSign)
Dim signature As String = Convert.ToBase64String(sigBytes)

' now construct the complete URL and return to caller.
Dim qsBuilder As New StringBuilder()
qsBuilder.Append(" http://").Append(Me.endPoint).Append(REQUEST_URI).Append("?").Append(canonicalQS).Append("&Signature=").Append(Me.PercentEncodeRfc3986(signature))

Return qsBuilder.ToString()
End Function

'
' * Sign a request in the form of a query string.
' *
' * This method returns a complete URL to use. Modifying the returned URL
' * in any way invalidates the signature and Amazon will reject the requests.
'

Public Function Sign(ByVal queryString As String) As String
Dim request As IDictionary(Of String, String) = Me.CreateDictionary(queryString)
Return Me.Sign(request)
End Function

'
' * Current time in IS0 8601 format as required by Amazon
'

Private Function GetTimestamp() As String
Dim currentTime As DateTime = DateTime.UtcNow
Dim timestamp As String = currentTime.ToString("yyyy-MM-ddTHH:mm:ssZ")
Return timestamp
End Function

'
' * Percent-encode (URL Encode) according to RFC 3986 as required by Amazon.
' *
' * This is necessary because .NET's HttpUtility.UrlEncode does not encode
' * according to the above standard. Also, .NET returns lower-case encoding
' * by default and Amazon requires upper-case encoding.
'

Private Function PercentEncodeRfc3986(ByVal str As String) As String
str = HttpUtility.UrlEncode(str, System.Text.Encoding.UTF8)
'str.Replace("'", "%27").Replace("(", "%28").Replace(")", "%29").Replace("*", "%2A").Replace("!", "%21").Replace("%7e", "~")
str = str.Replace("'", "%27").Replace("(", "%28").Replace(")", "%29").Replace("*", "%2A").Replace("!", "%21").Replace("%7e", "~").Replace("+", "%20")


Dim sbuilder As New StringBuilder(str)
For i As Integer = 0 To sbuilder.Length - 1

If sbuilder(i) = "%"c Then
'コメント化
'If [Char].IsDigit(sbuilder(i + 1)) AndAlso [Char].IsLetter(sbuilder(i + 2)) Then
sbuilder(i + 1) = [Char].ToUpper(sbuilder(i + 1)) '日本語対策で追加
sbuilder(i + 2) = [Char].ToUpper(sbuilder(i + 2))
'End If
End If

Next
Return sbuilder.ToString()
End Function

'
' * Convert a query string to corresponding dictionary of name-value pairs.
'

Private Function CreateDictionary(ByVal queryString As String) As IDictionary(Of String, String)
Dim map As New Dictionary(Of String, String)()

Dim requestParams As String() = queryString.Split("&"c)

For i As Integer = 0 To requestParams.Length - 1
If requestParams(i).Length < 1 Then
Continue For
End If

Dim sep As Char() = {"="c}
Dim param As String() = requestParams(i).Split(sep, 2)
For j As Integer = 0 To param.Length - 1
param(j) = HttpUtility.UrlDecode(param(j), System.Text.Encoding.UTF8)
Next
Select Case param.Length
Case 1
If True Then
If requestParams(i).Length >= 1 Then
If requestParams(i).ToCharArray()(0) = "="c Then
map("") = param(0)
Else
map(param(0)) = ""
End If
End If
Exit Select
End If
Case 2
If True Then
If Not String.IsNullOrEmpty(param(0)) Then
map(param(0)) = param(1)
End If
End If
Exit Select
End Select
Next

Return map
End Function

'
' * Consttuct the canonical query string from the sorted parameter map.
'

Private Function ConstructCanonicalQueryString(ByVal sortedParamMap As SortedDictionary(Of String, String)) As String
Dim builder As New StringBuilder()

If sortedParamMap.Count = 0 Then
builder.Append("")
Return builder.ToString()
End If

For Each kvp As KeyValuePair(Of String, String) In sortedParamMap

builder.Append(Me.PercentEncodeRfc3986(kvp.Key))
builder.Append("=")
builder.Append(Me.PercentEncodeRfc3986(kvp.Value))
builder.Append("&")
Next
Dim canonicalString As String = builder.ToString()
canonicalString = canonicalString.Substring(0, canonicalString.Length - 1)
Return canonicalString
End Function
End Class

'
' * To help the SortedDictionary order the name-value pairs in the correct way.
'

Class ParamComparer
Implements IComparer(Of String)
Public Function Compare(ByVal p1 As String, ByVal p2 As String) As Integer Implements IComparer(Of String).Compare

Return String.CompareOrdinal(p1, p2)
End Function

End Class
End Namespace



--------------
こんな感じで使う
public function CreateURL(AFID as string,ItemSearch as string,Keyword as string) as string

Dim URL As New Dictionary(Of String, String)
URL("Service") = "AWSECommerceService"
URL("Version") = "2008-04-07"
URL("AssociateTag") = AFID
URL("ContentType") = "Text/XML"
URL("Operation") = "ItemSearch"
URL("ResponseGroup") = "Small,ItemAttributes,Reviews,EditorialReview,Images,BrowseNodes,SalesRank,Offers"
URL("SearchIndex") = SearchIndex
'URL(KeywordType) = System.Web.HttpUtility.UrlEncode(Keyword)
URL(KeywordType) = Keyword

URL("ItemPage") = Page

If BrowseNode.Length > 0 Then
URL("BrowseNode") = BrowseNode
End If

'helper
Dim helper As New AmazonProductAdvtApi.SignedRequestHelper(MY_AWS_ACCESS_KEY_ID, MY_AWS_SECRET_KEY, DESTINATION)
Dim AmazonURL As String = helper.Sign(URL)

Return AmazonURL

end function

Visual Basic 2008逆引き大全555の極意

aws 特価 署名認証 特価
posted by kiyo at 20:35| xml | このブログの読者になる | 更新情報をチェックする

2009年01月08日

Livedoor にAtomでポスト

LivedoorにAtomで投稿するときのXML

カテゴリに前に書いたカテゴリを取得して
カテゴリの名前を入れれば
カテゴリを設定して投稿してくれます


Public Function AtomXML(ByVal Title As String, ByVal Body As String, ByVal Category As String)
        Dim XMLString As String

        XMLString = "<?xml version=""1.0"" encoding=""UTF-8""?>"
        XMLString &= "<entry xmlns=""http://purl.org/atom/ns#"" xmlns:dc=""http://purl.org/dc/elements/1.1/"">"
        XMLString &= "<title>" & Title & "</title>"
        XMLString &= "<dc:subject>" & Category & "</dc:subject>"
        XMLString &= "<content type=""text/html"" mode=""escaped"">"
        XMLString &= "<![CDATA[" & Body & "]]>"
        XMLString &= "</content>"
        XMLString &= "</entry>"

        Return XMLString
    End Function
ラベル:category ATOM Livedoor
posted by kiyo at 22:08| xml | このブログの読者になる | 更新情報をチェックする

2009年01月07日

Livedoor にカテゴリを設定して投稿する準備

Livedoor にカテゴリを設定して投稿する準備
LivedoorにVisual Basic2008からカテゴリを設定して投稿できるようにした。
投稿のURLと
設定してあるカテゴリを取得するURL
そしてアップロードするURL

エンドポイントっていうのかなあ
それを取得するには


http://cms.blog.livedoor.com/atom/

にAtomAPIで
こんな感じで
xml=atomget(username,password,endurl)
   Function atomget(ByVal username As String, ByVal password As String, ByVal endurl As String) As String

        'HTTP接続の作成
        Dim webreq As HttpWebRequest = CType(WebRequest.Create(endurl), HttpWebRequest)
        webreq.Method = "GET" 'GET指定
        webreq.UserAgent = "Blogposter" 'UA設定(ソフト名)

        'WSSE認証の作成
        Dim shasp As New System.Security.Cryptography.SHA1CryptoServiceProvider() 'SHA処理用
        Dim nowt As DateTime = DateTime.Now '現在の時間取得
        Dim tim As String = nowt.ToString("yyyy-MM-ddTHH:mm:ssZ") '文字列にする(2005-12-11T22:39:56Z)の形式
        Dim non As String = "inininininininininin" 'Nonce(WSSEに必須の20文字の文字列)
        Dim b64 As String = System.Convert.ToBase64String(shasp.ComputeHash(System.Text.Encoding.UTF8.GetBytes(non & tim & password))) 'NonceTimePasswordをSHA→Base64エンコード
        Dim ninsyou As String = "UsernameToken Username=""" & username & """, PasswordDigest=""" & b64 & """, Nonce=""" & System.Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(non)) & """, Created=""" & tim & """" '認証文の完成
        webreq.Headers.Add("X-WSSE", ninsyou) 'HTTP接続に付ける

        'HTTP接続を実行
        Dim st As System.IO.Stream = webreq.GetResponse().GetResponseStream() '接続
        Dim sr As New System.IO.StreamReader(st, System.Text.Encoding.GetEncoding("UTF-8")) 'デコード
        Return sr.ReadToEnd() '応答を文字列化

    End Function


これで

以下のような
xmlが得られる

<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://purl.org/atom/ns#">
  <link xmlns="http://purl.org/atom/ns#" type="application/x.atom+xml" rel="service.post" href="http://cms.blog.livedoor.com/atom/blog_id=123" title="テニス"/>
  <link xmlns="http://purl.org/atom/ns#" type="application/x.atom+xml" rel="service.feed" href="http://cms.blog.livedoor.com/atom/blog_id=123" title="テニス"/>
  <link xmlns="http://purl.org/atom/ns#" type="application/x.atom+xml" rel="service.categories" href="http://cms.blog.livedoor.com/atom/blog_id=123/svc=categories" title="テニス" />
  <link xmlns="http://purl.org/atom/ns#" type="application/x.atom+xml" rel="service.upload" href="http://cms.blog.livedoor.com/atom/blog_id=123/svc=upload" title="テニス" />
</feed>

posted by kiyo at 21:56| xml | このブログの読者になる | 更新情報をチェックする

2008年09月03日

Visula Basic 2008からAtom API でLivedoorに投稿してみるみる

VB2008(Visual Basic 2008)からLivedoorに投稿するのが結構面倒です
xml_rpc じゃなくてAtom APIとかの仕様なので、WSSE認証の作成というのをしなければならないようです。
いろいろ調べてみていろんな方のサイトやPHPなんかのプログラムも参考にしてAtomで投稿できるようになりました

LiveDoorPostはFunctionでリターンをするのですが、これはなんにも返しません??
投稿できればいいや。。。


    Public Function AtomXML(ByVal Title As String, ByVal Body As String)
        Dim XMLString As String

        XMLString = "<?xml version=""1.0"" encoding=""UTF-8""?>"
        XMLString &= "<entry xmlns=""http://purl.org/atom/ns#"" xmlns:dc=""http://purl.org/dc/elements/1.1/"">"
        XMLString &= "<title>" & Title & "</title>"
        'XMLString &= "<dc:subject>test</dc:subject>"
        XMLString &= "<content type=""text/html"" mode=""escaped"">"
        XMLString &= "<![CDATA[" & Body & "]]>"
        XMLString &= "</content>"
        XMLString &= "</entry>"

        Return XMLString
 

    Function LiveDoorPost(ByVal username As String, ByVal password As String, ByVal BlogID As String, ByVal XMLString As String) As String
        Dim postDataBytes As Byte() = System.Text.Encoding.UTF8.GetBytes(XMLString)
        Dim URL As String = "http://cms.blog.livedoor.com/atom/blog_id=" & BlogID
        'HttpWebRequestの作成
        Dim webreq As System.Net.HttpWebRequest = _
            CType(System.Net.WebRequest.Create(URL), System.Net.HttpWebRequest)
        webreq.Method = "POST" 'GET指定
        webreq.UserAgent = "Blogposter" 'UA設定(ソフト名)
        webreq.ContentType = "text/xml"
        webreq.ContentLength = postDataBytes.Length

        'WSSE認証の作成
        Dim shasp As New System.Security.Cryptography.SHA1CryptoServiceProvider() 'SHA処理用
        Dim nowt As DateTime = DateTime.Now '現在の時間取得
        Dim tim As String = nowt.ToString("yyyy-MM-ddTHH:mm:ssZ") '文字列にする(2005-12-11T22:39:56Z)の形式
        Dim non As String = "tekitounisitemiruyon" 'Nonce(WSSEに必須の20文字の文字列)
        Dim b64 As String = System.Convert.ToBase64String(shasp.ComputeHash(System.Text.Encoding.UTF8.GetBytes(non & tim & password))) 'NonceTimePasswordをSHA→Base64エンコード
        Dim ninsyou As String = "UsernameToken Username=""" & username & """, PasswordDigest=""" & b64 & """, Nonce=""" & System.Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(non)) & """, Created=""" & tim & """" '認証文の完成
        webreq.Headers.Add("X-WSSE", ninsyou) 'HTTP接続に付ける


        Dim reqStream As System.IO.Stream = webreq.GetRequestStream()

        reqStream.Write(postDataBytes, 0, postDataBytes.Length)
        reqStream.Close()

        'レスポンスの取得

        Dim response As System.Net.HttpWebResponse = Nothing
        Dim doc As New System.Xml.XmlDocument()
        'レスポンスの取得
        Try
            response = CType(webreq.GetResponse(), System.Net.HttpWebResponse)
            Dim strm As System.IO.Stream = response.GetResponseStream()

            'XmlDocumant に読み込む
            doc.Load(strm)
        Catch ex As Exception

            Return "エラー:" & ex.Message

        Finally
            If Not (response Is Nothing) Then
                response.Close()
            End If
        End Try

        '結果を得る
        'doc.Value
        Dim FileName As String = Application.StartupPath() & "\Tools\Livedoorxml.txt"
        doc.Save(FileName)

        Dim paramsNode As System.Xml.XmlNode = doc.SelectSingleNode("/methodResponse/params/param/value")

        'Try
        'Return paramsNode.SelectSingleNode("int").InnerText
        'Catch ex As Exception
        Return ""
        'End Try

    End Function

こんな感じでこの関数は使います
    LiveDoorPost(username, password,BlogID ,AtomXML(Title,Body))

posted by kiyo at 20:01| Comment(0) | TrackBack(5) | xml | このブログの読者になる | 更新情報をチェックする

2008年08月16日

ブログにXML-RPCで投稿

Movable type やfc2など、XML-RPCのサービスを行っているブログに投稿するためのXMLを作成するために関数です

BlogIDはFC2では サブドメイン.数字fc2.com
の数字の部分

Movable typeは管理画面などのURLのblogid=の数字ですね

MTは追記(More)と概要(Excerpt)にも対応しているので、MoreとExcerptを入れています
FC2などでは使えません

Titleはブログエントリーのタイトル(記事タイトル)
Bodyはブログの記事になります


    Public Function MetaWeblogNewPostXML(ByVal BlogID As String, ByVal UserName As String, ByVal Pass As String, ByVal Title As String, ByVal Body As String, ByVal More As String, ByVal Excerpt As String)
        Dim XMLString As String
        'methodCall
        'XMLString = "<?xml version=""1.0""?>"
        XMLString = "<methodCall>"
        'methodName
        XMLString &= "<methodName>metaWeblog.newPost</methodName>"
        'params
        XMLString &= "<params>"

        'BlogID
        XMLString &= "<param><value><string>" & BlogID & "</string></value></param>"

        'UserName
        XMLString &= "<param><value><string>" & UserName & "</string></value></param>"

        'Password
        XMLString &= "<param><value><string>" & Pass & "</string></value></param>"

        'Content
        XMLString &= "<param><value><struct>"
        '本文
        XMLString &= "<member>"
        XMLString &= "<name>description</name>"
        XMLString &= "<value>"
        XMLString &= "<![CDATA[" & Body & "]]>"
        XMLString &= "</value>"
        XMLString &= "</member>"

        'タイトル
        XMLString &= "<member>"
        XMLString &= "<name>title</name>"
        XMLString &= "<value>"
        XMLString &= Title
        XMLString &= "</value>"
        XMLString &= "</member>"

        If Not More = "" Then
            'Entry More
            XMLString &= "<member>"
            XMLString &= "<name>mt_text_more</name>"
            XMLString &= "<value>"
            XMLString &= "<![CDATA[" & More & "]]>"
            XMLString &= "</value>"
            XMLString &= "</member>"
        End If

        If Not Excerpt = "" Then
            'EntryExcerpt
            XMLString &= "<member>"
            XMLString &= "<name>mt_excerpt</name>"
            XMLString &= "<value>"
            XMLString &= "<![CDATA[" & Excerpt & "]]>"
            XMLString &= "</value>"
            XMLString &= "</member>"
        End If

        'convert breaks
        XMLString &= "<member>"
        XMLString &= "<name>mt_convert_breaks</name>"
        XMLString &= "<value>"
        XMLString &= "0"
        XMLString &= "</value>"
        XMLString &= "</member>"

        '/Content
        XMLString &= "</struct></value></param>"

        'Publish
        XMLString &= "<param><value><boolean>1</boolean></value></param>"

        '/params
        XMLString &= "</params>"
        '/methodCall
        XMLString &= "</methodCall>"

        Return XMLString
    End Function

posted by kiyo at 20:59| Comment(3) | TrackBack(0) | xml | このブログの読者になる | 更新情報をチェックする

2008年06月17日

VB2008でYahoo!デベロッパーネットワークのXMLを取得する

前回のVisual Basic2008のソースの中のURLAssistSearchURLは、Yahoo API でヤフーのキーワードに対する関連語を取得するURLを作る関数を定義しています。

Dim APIID As String = "******"
の******には、ヤフー webサービスのIDが入ります。

Public Function URLAssistSearchURL(ByVal Keyword As String, ByVal Count As String) As String

Keyword は

検索したいキーワード
Count は
出力したい関連語の件数です

最大は100だったかな?

System.Web.HttpUtility.UrlEncode(Keyword)

という部分で、Keywordをutf-8でurlエンコードしています。

Visual Basic 2008は6.0と大きくことなるところの一つが、文字コードでしょう
vb6.0はシフトJIS だったのですが、VB2008はUTF-8が標準になっているので、APIとかXMLの取り扱いも文字コードを余り気にせずにできそうです。


Public Function URLAssistSearchURL(ByVal Keyword As String, ByVal Count As String) As String
'Yahoo Assist Search 関連語を検索する
Dim YahooAPIURL As String
Dim APIID As String = "******"
YahooAPIURL = "http://api.search.yahoo.co.jp/AssistSearchService/V1/webunitSearch?appid=" & _
APIID & "&query=" & System.Web.HttpUtility.UrlEncode(Keyword) & "&results=" & Count

Return YahooAPIURL
End Function

Yahoo!デベロッパーネットワークで詳しい情報は見て欲しいのですが

前回のソースではこの関数で返されたURLを

XDocument.load(URL)としてXDocumentを取得しています

この場合

Keyword に「ほしのあき」と入れて検索すると

ほしのあき 画像
ほしのあき DVD
ほしのあき 写真集

とかみたいに関連語を返すわけです

これがなにに役にたつかは?またのお楽しみ。
posted by kiyo at 20:59| Comment(0) | TrackBack(0) | xml | このブログの読者になる | 更新情報をチェックする

2008年06月14日

Yahoo WebサービスからXMLを取得する

Visual Basic 2008(vb2008)を使って、Yahooの関連検索ワードWebサービスから、XMLを引っ張ってこようと思います

Yahooの関連検索ワードWebサービス

YahooにあるサンプルのXMLを拾うURLは
サンプルリクエストURL
http://api.search.yahoo.co.jp/AssistSearchService/V1/webunitSearch?appid=YahooDemo&query=%e6%b2%96%e7%b8%84&results=2
そうすると、xmlで沖縄 の関連キーワードが出力されます

以下のファンクションは
Keyword に検索したいKeyword

Countに出力してほしい件数 URL のresults=2 の2の部分)をいれて
URLAssistSearchURL(Keyword, Count)
でリクエストのURLを作成して

XDocument.Load(YahooAPI.URLAssistSearchURL(Keyword, Count))

でXMLを取得しています。

そして検索結果をList形式で

return しています。

Option Strict On
Imports System.Xml.Linq
Imports System.Xml
Imports System.Net
Imports System.Web
Imports System
Imports System.IO
Imports System.Text
Imports System.Threading.Thread
Imports
Imports

Public Function YahooAssistSearch(ByVal Keyword As String, ByVal Count As String) As List(Of String)
Dim YahooXML As XDocument
Dim aw As XNamespace = "urn:yahoo:jp:srchunit"
Dim ICount As Long
Dim List As New List(Of String)
'Yahoo APIからXMLを取得

YahooXML = XDocument.Load(YahooAPI.URLAssistSearchURL(Keyword, Count))
'Clipboard.SetText(YahooAPI.URLAssistSearchURL(Keyword, Count))
'XMLからtotalResultsAvairable 何件ヒットしたかを取得して、Clngでlong型に変更する
ICount = CLng(YahooXML.Elements(aw + "ResultSet").@totalResultsAvailable.ToString)
Dim query As IEnumerable(Of XElement) = YahooXML.Elements(aw + "ResultSet").

'結果があれば
'If ICount > 0 Then
'Keyword 自体も追加
List.Add(Keyword)
For Each result In query
List.Add(result.Value)
Next
'End If

Return List

End Function
posted by kiyo at 20:46| Comment(0) | TrackBack(0) | xml | このブログの読者になる | 更新情報をチェックする

2008年06月03日

xmlをxDocument.Loadで読み込む

XMLをVisual Basic 2008 Express(VB2008)で読み込んで見ましょう

VB6からVB2008を使おうと思ったのはこのxmlを簡単に操作できるということで使ったのです。

簡単に言えばこのように
XDocument.Load(URI)
とよみこみます

msdnには以下のようなサンプルがあります。
Dim books = _
XDocument.Load(My.Application.Info.DirectoryPath & _
"\..\..\Data\books.xml")

パソコン内のファイルのPathでもいいですし、xmlのURLを指定してもいいという大変便利なものになっています。

先頭に
Imports System.Xml.Linq
Imports System.Xml

といれて

Dim uri As String
Dim returnValue As XDocument

returnValue = XDocument.Load(uri)

たったこれだけでuriに指定したxmlファイルをreturnValue として読み込むことができます。

あとは、このreturnValue を解析してみればいいだけですね

次はYahooのウェッブサービスを利用して、そこからxmlを取得してみたいと思います
posted by kiyo at 19:16| Comment(0) | TrackBack(0) | xml | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。