传递isXML()的XML但在ColdFusion中失败了xmlParse()

时间:2018-04-26 19:38:28

标签: xml coldfusion

我正在为一些看起来像这样的古老代码编写测试用例:

componentWillMount

Blame揭示了一些背景故事,表明我们看到了一些if (isXML(foo)) { try { bar = xmlParse(foo); } catch(any e) { // log error } } 返回true的XML字符串,但isXML引发了某种异常。

什么样的字符串会产生这种效果?

我已经尝试输入一个我知道可以解析的字符串,然后在元素中添加了xmlParse,但是&返回false。我不知道还有什么可以尝试的。

1 个答案:

答案 0 :(得分:4)

以下是DOCSIsXml()的使用详情:

  

此函数确定文本是否是格式良好的XML,即它   符合所有XML语法和结构规则。字符串没有   必须是一个完整的XML文档。该功能无法验证   针对文档类型定义(DTD)或XML架构。

因此,有可能使用了一些命名空间但未找到定义。即,

<cfsavecontent variable="xml">
    <?xml version="1.0" encoding="UTF-8"?>
    <xyz:note>
      <xyz:to>Myself</xyz:to>
      <xyz:from>You</xyz:from>
      <xyz:heading>Reminder</xyz:heading>
      <xyz:body>Test</xyz:body>
    </xyz:note>
</cfsavecontent>
<cfset xml = trim( xml )>

<!--- Try to parse --->
<cfset isXmlParsable = TRUE>
<cftry>
    <cfset XmlParse( xml )>

    <cfcatch>

        <!--- Will come here as xyz namespace is not defined --->
        <cfset isXmlParsable = FALSE>
    </cfcatch>
</cftry>

<cfoutput>
    Is XML Valid: #IsXml( xml )#<br>
    Is XML Parsable: #isXmlParsable#
</cfoutput>

<强>输出:

XML是否有效:是
是XML可解析的:FALSE

这是GIST