【发布时间】:2018-04-26 19:38:28
【问题描述】:
我正在为一些看起来像这样的古老代码编写一个测试用例:
if (isXML(foo)) {
try {
bar = xmlParse(foo);
}
catch(any e) {
// log error
}
}
Blame 揭示了一些背景故事,表明我们看到了一些 XML 字符串,它们的 isXML 返回 true,但 xmlParse 抛出了某种异常。
什么样的字符串会产生这种效果?
我尝试输入一个我知道可以解析的字符串,然后在一个元素中添加一个&,但随后isXML 返回false。我不确定还能尝试什么。
【问题讨论】:
-
一些 XML 字符串向我们展示。 某种例外向我们展示。在此之前,这里有一个 SWAG:
isXML()仅检查格式正确,但xmlParse()正在检查架构的有效性。 -
“一些 XML 字符串”部分正是我所追求的。可悲的是,这样的字符串和任何记录的异常现在已经过去好几年了。架构有效性很可能就是问题所在。我会调查的。 :)
-
@kjhughes 我相信所有 CF 函数名称都不区分大小写,因此“xmlParse()”和“XMLPARSE()”是一回事。
-
我在使用 isImage、isImageFile 和 isPDF 时遇到过类似的问题。这些函数将评估为“true”,然后在尝试读取文件时抛出错误。
-
IsXml(): 该函数判断文本是否为格式良好的XML,即是否符合所有XML语法和结构规则。字符串不必是完整的 XML 文档。该函数不针对文档类型定义 (DTD) 或 XML 模式进行验证。 也许 xml 正在使用某些命名空间但无法找到定义。示例:trycf.com/gist/646fbaf11338a8681586aeb06a8b7288/…
标签: xml coldfusion