XMLNS出现在每个节点上

时间:2017-06-02 09:31:35

标签: xml vb.net

我正在使用以下代码创建新的XML文档:

Dim doc As New XmlDocument()
Dim docNode As XmlNode = doc.CreateXmlDeclaration("1.0", Nothing, Nothing)
doc.AppendChild(docNode)

Dim rssNode As XmlNode = doc.CreateElement("rss")
rssNode.Attributes.Append(doc.CreateAttribute("version")).Value = "2.0"
rssNode.Attributes.Append(doc.CreateAttribute("xmlns:g")).Value = "http://base.google.com/ns/1.0"
doc.AppendChild(rssNode)

Dim ChannelNode As XmlNode = doc.CreateElement("channel")
rssNode.AppendChild(ChannelNode)
ChannelNode.AppendChild(doc.CreateElement("Title")).InnerText = "Product List"
ChannelNode.AppendChild(doc.CreateElement("link")).InnerText = HttpContext.Current.Request.Url.Host
ChannelNode.AppendChild(doc.CreateElement("description")).InnerText = "Web Site Product Links"

然后我循环遍历我的对象列表并使用以下代码将项添加到XML:

    Dim itemNode As XmlNode = doc.CreateElement("item")
    ChannelNode.AppendChild(itemNode)

    itemNode.AppendChild(doc.CreateElement("g", "id", "g:id")).InnerText = item.id

虽然这确实生成了XML文档,但它采用以下格式:

<?xml version="1.0"?>
<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0">
<channel>
    <Title>Product List</Title>
    <link>localhost</link>
    <description>Web Site Product Links</description>
    <item>
        <g:id xmlns:g="g:id">123456</g:id>
    </item>
</channel>

我遵循以下格式:

<?xml version="1.0"?>
<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0">
<channel>
    <Title>Product List</Title>
    <link>localhost</link>
    <description>Web Site Product Links</description>
    <item>
        <g:id>123456</g:id>
    </item>
</channel>

我尝试的所有内容似乎都删除了XMLNS属性,但也从元素标记中删除了“g:”,我找不到只删除XMLNS标记所需的组合,并将其保留在我的示例中。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

将名称空间保存在变量中:

Dim myNamespace as String = "http://base.google.com/ns/1.0"

然后在xmlns声明中使用该命名空间:

rssNode.Attributes.Append(doc.CreateAttribute("xmlns:g")).Value = myNamespace

然后在创建节点时:

itemNode.AppendChild(doc.CreateElement("g", "id", myNamespace)).InnerText = item.id