2009-07-08 2 views
0

Mein Kunde möchte keine Datenbank, würde aber seine Daten lieber in einer XML-Datei aktualisieren. Das ist alles gut und gut. Sie möchten jedoch auch, dass ihre Artikel an Google-Produkte gesendet werden. Dies verkompliziert die Dinge ein wenig. Ich entschied mich zu versuchen, einfach die Google XML-Datei für die Datenbank zu verwenden, anstatt zwei separate Dateien zu erstellen und zu verwalten, aber ich habe gerade einen Roadblock getroffen. Meine XML ist wie folgt:ASP.NET: Der Versuch, Google Base XML zu parsen, kann nicht auf "g:" -Tags zugreifen.

<?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> 
.... 

Und mein Code, um diese Daten zu extrahieren ist wie folgt:

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 

Eine blaue Wellenlinie in VS08 unter dem "g" in erscheint "g: Preis" mit Der Fehler "XML-Namespacepräfix 'g' ist nicht definiert". Wie behebe ich das? Oder ist das nur eine schlechte Idee und ich sollte wieder zwei separate Dateien verwalten?

Vielen Dank!

Antwort

2

Versuchen Sie, die folgende Zeile in der ersten Zeile der Datei hinzu:

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

(Ich habe noch nie VB getan 2008, so dass die Syntax off sein kann)

EDIT: here See.

+0

Ich versuche, die folgende, aber die Debug mir eine Zählung von 0 statt 8 geben: Dim AllItems As New List (Of CartItem) \t \t Dim productXML Wie XDocument = XDocument.Load (Current.Server. MapPath ("/ App_Data/g-attempt.xml")) \t \t Dim productsDoc = XDocument.Parse (productXML.ToString()) \t \t Dim Produkte = Von Eintrag in productsDoc ... Eintrag auswählen \t \t Debug.Assert (False, products.Count) Was a m Ich mache falsch? – Jason

+0

Kannst du das in deine Frage einfügen, damit es formatiert wird? – SLaks

+0

FIGURED IT OUT! Ich muss nicht nur die von Ihnen erwähnte Importanweisung hinzufügen, sondern auch hinzufügen: Importe DANKE SO VIEL! – Jason

Verwandte Themen