【问题标题】:How to write special characters as they are to XML file如何将特殊字符原样写入 XML 文件
【发布时间】:2017-05-17 09:53:13
【问题描述】:

我正在尝试使用 vbscript/QTP 根据 excel 中提供的数据创建文件。我遇到的问题是带有特殊字符的负面测试用例。我想将特殊字符写为节点文本,但它们会自动转换为转义字符。

要写入的文本:地址第一行是"'&amp 等于 3 保存文件后的实际文本:地址第一行是<>>>&&amp;amp;amp;amp;amp;amp;amp;amp;lt;>>>>&amp;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&lt;&gt;&quot;&apos;&amp equal to 3"
End If

【问题讨论】:

  • 要写入的文本字段已经转换了特殊字符。 :)但是您可以在代码部分中找到要编写的实际文本。
  • 是在 xml 中定义属性的内容,如果不对其进行转义,则不能将它们用作值,因此它将被视为属性。当您阅读 XML 时,您应该以您期望的格式获得文本。 (没有转义字符)..你有什么问题?
  • 我只尝试输入转义字符。请参考我的代码。我面临的问题是每个&符号都被转换为'&'因此,像'>'这样的字符并且在读取此 XML 的结果 MQ 消息中未按预期出现。

标签: xml vbscript qtp


【解决方案1】:

在 'If' 条件中使用以下行:

NodeList.childNodes(0).nodeValue = "address line one is"&Chr(60)&Chr(62)&Chr(34)&chr(39)&"&amp equal to 3"

这里,

  chr(60) means <
  chr(62) means >
  chr(34) means "
  chr(39) means '

结果如下:

【讨论】:

  • 不完全是我遇到的问题。我遇到的问题是....即使我尝试添加 (<) 或 (>) 转义字符,vbscript 也会将其更改为 (&lt) 或 (&gt) 因此我的 xml 变得不正确人物。 If Not(NodeList is Nothing) Then NodeList.childNodes(0).nodeValue = "address line one is<>"'&amp equal to 3" End If Resultant xml address line one is&lt ;>&quot;&’&amp 等于 3
【解决方案2】:

通过使用@Kira 的解决方案和下面链接中发布的解决方案,我能够创建我的解决方案。问题是 XML 从头到尾线性替换。

Hence first ampersand in ("&lt;") will be replaced as ("&amp;lt") instead of (<). 

您必须在 XML 替换字符之前主动替换字符。

strReplaceText = Replace(strtext, "&lt;", chr(60)) //Sample... Repeat for all the chars
NodeList.childNodes(0).nodeValue = strReplaceText 
objXML.Save(destination)

有关更多信息,请访问此主题。 vbscript create-convert xml with special characters

【讨论】:

    猜你喜欢
    • 2018-09-29
    • 2021-01-18
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    • 2013-12-09
    • 1970-01-01
    • 2021-05-26
    相关资源
    最近更新 更多