在XML属性上使用冒号字符时出错

时间:2011-05-23 06:01:54

标签: .net vb.net linq linq-to-xml

如何使用类XDocument并将其属性名称设置为接受冒号字符?我收到此错误

  

“':'字符,十六进制值0x3A,不能包含在名称中。”

Dim ns As XNamespace = "http://www.sitemaps.org/schemas/sitemap/0.9"
Dim xi As XNamespace = "http://www.w3.org/2001/XMLSchema-instance"

Dim sitemapValue As New XDocument(New XDeclaration("1.0", "utf-8", ""),
New XElement("urlset", New XAttribute("xmls", ns), 
                                     New XAttribute("xmls:xi", xi)))

我只想使用XDocument类在下面输出以下标题。

<?xml version="1.0" encoding="UTF-8"?>
<urlset
      xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
            http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">

2 个答案:

答案 0 :(得分:3)

尝试(使用VS 2010,否则需要添加行继续符)

Dim ns As XNamespace = "http://www.sitemaps.org/schemas/sitemap/0.9"
Dim xi As XNamespace = "http://www.w3.org/2001/XMLSchema-instance"

Dim doc As XDocument = New XDocument(
                       New XElement(ns + "urlset",
                                    New XAttribute(XNamespace.Xmlns + "xsi", xi),
                                    New XAttribute(xi + "schemaLocation", "http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd")))

答案 1 :(得分:1)

Dim ns As XNamespace = "http://www.sitemaps.org/schemas/sitemap/0.9"
Dim xi As XNamespace = "http://www.w3.org/2001/XMLSchema-instance"

Dim sitemapValue As New XDocument(New XDeclaration("1.0", "utf-8", ""), New XElement("urlset", New XAttribute("xmls", ns),  _
                                     New XAttribute(XNamespace.Xmlns + "xi", xi), New XAttribute(xi + "schemaLocation", "http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd")))

输出:

<urlset xmls="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xi="http://www.w3.org/2001/XMLSchema-instance" xi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" />

请告诉我这是否是您所要求的。