如何将特殊字符原样写入 XML 文件
Posted
技术标签:
【中文标题】如何将特殊字符原样写入 XML 文件【英文标题】:How to write special characters as they are to XML file 【发布时间】:2017-05-17 09:53:13 【问题描述】:我正在尝试使用 vbscript/QTP 根据 excel 中提供的数据创建文件。我遇到的问题是带有特殊字符的负面测试用例。我想将特殊字符写为节点文本,但它们会自动转换为转义字符。
要写入的文本:地址第一行是"'& 等于 3 保存文件后的实际文本:地址第一行是<>>>&&amp;amp;amp;amp;amp;amp;amp;lt;>>>>&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp-and-amp-and-of-saving the file
有没有办法告诉 vbscript/XMLDOM 不要转换这些。
我使用的代码很简单。
Set NodeList = uxtXMLDoc.documentElement.selectSingleNode(strNodePath)
If Not(NodeList is Nothing) Then
NodeList.childNodes(0).nodeValue = "address line one is<>"'& equal to 3"
End If
【问题讨论】:
要写入的文本字段已经转换了特殊字符。 :)但是您可以在代码部分中找到要编写的实际文本。 是在 xml 中定义属性的内容,如果不对其进行转义,则不能将它们用作值,因此它将被视为属性。当您阅读 XML 时,您应该以您期望的格式获得文本。 (没有转义字符)..你有什么问题? 我只尝试输入转义字符。请参考我的代码。我面临的问题是每个&符号都被转换为'&'因此,像'>'这样的字符并且在读取此 XML 的结果 MQ 消息中未按预期出现。 【参考方案1】:在 'If' 条件中使用以下行:
NodeList.childNodes(0).nodeValue = "address line one is"&Chr(60)&Chr(62)&Chr(34)&chr(39)&"& equal to 3"
这里,
chr(60) means <
chr(62) means >
chr(34) means "
chr(39) means '
结果如下:
【讨论】:
不完全是我遇到的问题。我遇到的问题是....即使我尝试添加 (<) 或 (>) 转义字符,vbscript 也会将其更改为 (<) 或 (>) 因此我的 xml 变得不正确人物。 If Not(NodeList is Nothing) Then NodeList.childNodes(0).nodeValue = "address line one is<>"'& equal to 3" End If Resultant xml通过使用@Kira 的解决方案和下面链接中发布的解决方案,我能够创建我的解决方案。问题是 XML 从头到尾线性替换。
Hence first ampersand in ("<") will be replaced as ("&lt") instead of (<).
您必须在 XML 替换字符之前主动替换字符。
strReplaceText = Replace(strtext, "<", chr(60)) //Sample... Repeat for all the chars
NodeList.childNodes(0).nodeValue = strReplaceText
objXML.Save(destination)
有关更多信息,请访问此主题。 vbscript create-convert xml with special characters
【讨论】:
以上是关于如何将特殊字符原样写入 XML 文件的主要内容,如果未能解决你的问题,请参考以下文章