Мой клиент не хочет базы данных, но предпочел бы обновить свои данные в файле XML. Это все хорошо. Однако они также хотят, чтобы их товары были представлены в продуктах Google. Это немного усложняет ситуацию. Я решил попытаться просто использовать файл Google XML для базы данных, а не создавать и поддерживать два отдельных файла, но я просто наткнулся на контрольно-пропускной пункт. Мой XML такой:
<?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
Синяя волнистая линия появляется в VS08 под «g» в «g: price» с ошибкой «Префикс xml пространства имен« g »не определен». Как это исправить? Или это просто плохая идея, и я должен вернуться к ведению двух отдельных файлов?
Спасибо!