ASP.NET: пытается проанализировать Google Base XML, не может получить доступ к тегам "g:" - PullRequest
0 голосов
/ 08 июля 2009

Мой клиент не хочет базы данных, но предпочел бы обновить свои данные в файле 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 »не определен». Как это исправить? Или это просто плохая идея, и я должен вернуться к ведению двух отдельных файлов?

Спасибо!

1 Ответ

2 голосов
/ 08 июля 2009

Попробуйте добавить следующую строку в начало вашего файла:

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

(я никогда не делал VB 2008, поэтому синтаксис может быть отключен)

РЕДАКТИРОВАТЬ : См. здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...