0
下面是一个简化示例,它为我正在尝试修复的错误创建了一个相同的错误。元素XMLFileDefinition未在类型为class coldfusion.xml的Java对象中定义.XmlNodeList
<cfscript>
private xml function getBaseRequest() {
// Set up the root xml element
var xmlReturn = XmlNew(true);
xmlReturn.xmlRoot = xmlElemNew(xmlReturn,'testbase');
// Attach a child with generic name
ArrayAppend(xmlReturn['testbase'].XmlChildren,xmlElemNew(xmlReturn,'thisworks'));
// Add a child to that
ArrayAppend(xmlReturn['testbase']['thisworks'].XmlChildren,xmlElemNew(xmlReturn,'attachme'));
// Now attach a child with node name 'XMLFileDefinition'
ArrayAppend(xmlReturn['testbase'].XmlChildren,xmlElemNew(xmlReturn,'XMLFileDefinition'));
// And attempt to add a child to that
// produces error "Element XMLFileDefinition is undefined in a Java object of type class coldfusion.xml.XmlNodeList"
ArrayAppend(xmlReturn['testbase']['XMLFileDefinition'].XmlChildren,xmlElemNew(xmlReturn,'thisbreaks'));
return xmlReturn;
}
</cfscript>
为了澄清,该XML时倾倒出来之前的线标记为示数是根据由第三方,因此我们提供了一个架构如下
<?xml version="1.0" encoding="UTF-8"?>
<testbase>
<thisworks>
<attachme/>
</thisworks>
<XMLFileDefinition/>
</testbase>
不幸的是需要此XML不能将节点重命名为与ColdFusion更好地协同工作的节点。
UPDATE这似乎与节点名称上的“XML”前缀有关。任何以“XML”为前缀的节点似乎都会导致此问题。我已经添加了我的答案,详细说明了如何解决此问题,但希望有人能够提出更优雅/通用的解决方案,因为我的方案存在一些潜在的缺陷。 CF /爪哇
版本如下:
- 的ColdFusion版本:9,0,1,274733
- Java版本:14.3-B01
我自己也尝试更新,这仍然出现在以下版本
- ColdFusion版本:9,0,1,274733(累积修补程序2)
- Java版本:1.7.0_03