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