在XML文档中存储等号(=)

时间:2010-09-10 22:51:19

标签: asp.net xml vb.net xml-parsing

我正面临着Google无法解决的问题!

我正在尝试将URL存储在XML文件中。问题是这些URL中包含Equal Signs(=)。这会产生错误。

这是我的代码:(** token是包含URL的变量)

Dim child As String = vbCrLf & "<Link URL='" & token & "'></Link>"
Dim fragment As XmlDocumentFragment = doc.CreateDocumentFragment
fragment.InnerXml = child

错误消息:(错误行和位置在这里毫无意义)

  

'='是一个意外的令牌。预期的标记是';'。第2行,第133位。

我已经取代了所有'&amp;'带有'&amp; amp'的符号,以防它们导致错误,但到目前为止没有运气。

3 个答案:

答案 0 :(得分:3)

您永远不应该使用字符串操作来创建XML。如果您使用.NET的XML API,他们将为您处理所有特殊字符。尝试:

XmlElement linkElement = doc.CreateElement("Link");
XmlAttribute urlAttribute = doc.CreateAttribute("URL");
urlAttribute.Value = token;
linkElement.SetAttributeNode(urlAttribute);
fragment.AppendChild(linkElement);

答案 1 :(得分:1)

您不应将&替换为&amp,而应将其替换为&amp;

或者更好的是,在片段中创建一个节点并为其添加属性。这样,对象将为您正确编码数据。

Dim fragment As XmlDocumentFragment = doc.CreateDocumentFragment()
Dim node As XmlElement = doc.CreateElement("Link")
Dim attr as XmlAttribute = doc.CreateAttribute("URL")
attr.Value = token
node.Attributes.Append(attr)
fragment.AppendNode(node)

答案 2 :(得分:0)

尝试在第一行下面添加此行:

-- insert this line; should make the "=" sign safe for XML...
token = System.Web.HttpUtility.UrlEncode(token)

Dim child As String = vbCrLf & "<Link URL='" & token & "'></Link>"
Dim fragment As XmlDocumentFragment = doc.CreateDocumentFragment
fragment.InnerXml = child