ASP.NET:尝试解析 Google Base XML,无法访问 "g:"标签

标签 asp.net xml linq namespaces

我的客户不想要数据库,但更喜欢在 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:price”中的“g”下方出现一条蓝色波浪线,并显示错误“xml 命名空间前缀‘g’未定义”。我该如何解决?或者这只是一个坏主意,我应该回去维护两个单独的文件?

谢谢!

最佳答案

尝试将以下行添加到文件顶部:

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

(我从来没有做过 VB 2008,所以语法可能是关闭的)

编辑 : 见 here .

关于ASP.NET:尝试解析 Google Base XML,无法访问 "g:"标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1100133/

相关文章:

.net - 什么是 IIS 和 Asp.Net 中的应用程序池?

javascript - 来自 ajax 表单的 XML 请求

c# - 遍历 LINQ 结果列表

c# - 动态 Lambda 表达式调用

c# - 动态排序函数

c# - 在 Azure Web Apps 上更改时区不适用于 DateTimeOffset.Now?

Asp.Net 应用程序池重叠回收时间?

c# - 如何在 MVC 3 中获取当前页面 URL

java - 如何使用 JiBX 读取 XML 文档?

python - 通过 XPath 获取文本,忽略标记