2009-07-08 4 views
0

私の顧客はデータベースは望んでいませんが、データをXMLファイルで更新したいと考えています。これはすべてうまくいいです。しかし、彼らはまた、彼らのアイテムをGoogle製品に提出したい。これは少し複雑です。私は、2つの別々のファイルを作成して管理するのではなく、データベース用にGoogle XMLファイルを使用することにしましたが、私はちょうどロードブロックを打ちました。私のXMLは、このようなものです:ASP.NET:Google Base XMLを解析しようとしましたが、「g:」タグにアクセスできない

<?xml version="1.0" encoding="utf-8" ?> 
<feed xmlns:g="http://base.google.com/ns/1.0" 
xmlns:c="http://base.google.com/cns/1.0" xmlns="http://www.w3.org/2005/Atom"> 
<title>Company Product and Price Catalog</title> 
<link rel="self" href="http://www.example.com" /> 
<author> 
    <name>Some Company</name> 
</author> 
<id>tag:example.com:/App_Data/</id> 
    <entry> 
      <id>1</id> 
     <title>Product Title</title> 
     <g:price>100.00</g:price> 
     <link href="http://www.example.com/product" /> 
     <g:image_link>http://www.example.com/images/product.jpg</g:image_link> 
     <g:condition>new</g:condition> 
     <g:brand>Brand Name</g:brand> 
     <payment_accepted>cash,check,invoice,amex,discover,mastercard, 
visa,googlecheckout</payment_accepted> 
     <g:payment_notes>Google Checkout accepted</g:payment_notes> 
    </entry> 
.... 

そして、このデータを抽出するために私のコードは次のようである:と:

Dim allItems As New List(Of CartItem) 
     Dim productXML As XDocument = XDocument.Load(_ 
Current.Server.MapPath("/App_Data/products.xml")) 


    Dim productsDoc = System.Xml.Linq.XDocument.Parse(productXML.ToString()) 
    Dim products = From entry In productsDoc...<entry> Select entry 

    For Each entry In products 
     Dim product As New CartItem 
     Dim nameAndOptions() As String = Split(entry.<title>.Value, " - ") 
     product.ProductName = nameAndOptions(0) 
     If nameAndOptions.Length = 2 Then 
      product.[Option] = nameAndOptions(1) 
     End If 
     product.Price = entry.<g:price>.Value 'problem here!' 
     product._productid = entry.<id>.Value 
     product._permalink = entry.<link>.Value 
     allItems.Add(product) 
    Next 

    Return allItems 

青い波線ラインは「価格グラム」の「G」の下VS08に表示されます。エラー "xml名前空間接頭辞 'g'が定義されていません"。これをどうやって解決するのですか?またはこれは単なる悪い考えで、私は2つの別々のファイルを管理することに戻るべきですか?

ありがとうございました!ファイルの先頭に以下の行を追加し

答えて

2

試してみてください。

Imports <xmlns:g="http://base.google.com/ns/1.0"> 

(私はVB 2008をやったことがない、構文がずれることがありますので)

EDIThereを参照してください。

+0

私は次のことをしようとしているが、デバッグは私に0の代わりに、8カウントを与えている:(CartItemの)新規一覧として 点心allItemsは \t \t薄暗いproductXML XDocument = XDocument.Load(Current.Server通り。 MapPathの( "/ App_Dataに/ G-attempt.xml")) \t \t薄暗いproductsDoc = XDocument.Parse(productXML.ToString()) \t \t薄暗い製品productsDocのエントリから=は... 選択項目 \t \t Debug.Assert(False、products.Count) 私は間違っている? – Jason

+0

これをあなたの質問に入れて、フォーマットされることができますか? – SLaks

+0

それを出しました!あなたが言及したインポートステートメントを追加するだけでなく、追加する必要があります:輸入 ありがとうございます! – Jason