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!
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
Kannst du das in deine Frage einfügen, damit es formatiert wird? – SLaks
FIGURED IT OUT! Ich muss nicht nur die von Ihnen erwähnte Importanweisung hinzufügen, sondern auch hinzufügen: Importe DANKE SO VIEL! –
Jason