我正面临着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'的符号,以防它们导致错误,但到目前为止没有运气。
答案 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)
您不应将&
替换为&
,而应将其替换为&
。
或者更好的是,在片段中创建一个节点并为其添加属性。这样,对象将为您正确编码数据。
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