2017-09-18 51 views
2

我想讀我創建的XML文件中的一些值XML節點的元素,但它給了我下面的錯誤:無法讀取的ColdFusion

coldfusion.runtime.UndefinedElementException: Element MYXML.UPLOAD is undefined in XMLDOC. 

這裏是我的代碼

<cffile action="read" file="#expandPath("./config.xml")#" variable="configuration" /> 
 
<cfset xmldoc = XmlParse(configuration) /> 
 
<div class="row"><cfoutput>#xmldoc.myxml.upload-file.size#</cfoutput></div>

這裏是我的config.xml

<myxml> 
 
<upload-file> 
 
    <size>15</size> 
 
    <accepted-format>pdf</accepted-format> 
 
</upload-file> 
 
</myxml>

有人可以幫助我弄清楚什麼是錯誤?

當我打印整個變量<div class="row"><cfoutput>#xmldoc#</cfoutput></div>它顯示爲

15 PDF

+0

把這樣的東西添加到你的config.xml的開頭,<?xml version =「1.0」encoding =「UTF-8」?>'。 –

回答

3

的問題是包含在你的XML中的<upload-file>名字連字符-值。如果您掌握了XML內容,最簡單的解決方法是在字段名稱中不使用連字符。如果你無法控制XML內容,那麼你需要做更多的事情來解決這個問題。

奔納德爾對該主題一個很好的博客文章 - Accessing XML Nodes Having Names That Contain Dashes In ColdFusion

那篇文章:

To get ColdFusion to see the dash as part of the node name, we have to "escape" it, for lack of a better term. To do so, we either have to use array notation and define the node name as a quoted string; or, we have to use xmlSearch() where we can deal directly with the underlying document object model.

他接着舉例說明。正如他在那篇文章中所述,您可以引用節點名稱來訪問數據。像...

<div class="row"> 
    <cfoutput>#xmldoc.myxml["upload-file"].size#</cfoutput> 
</div> 

或者您可以使用xmlSearch()函數爲您解析數據。請注意,這將返回一組數據。像...

<cfset xmlarray = xmlSearch(xmldoc,"/myxml/upload-file/")> 

<div class="row"> 
    <cfoutput>#xmlarray[1].size#</cfoutput> 
</div> 

這兩個例子都會輸出15

I created a gist for you to see these examples as well

+0

非常感謝Miguel-F :-) –

+0

很高興它爲您提供幫助。 –