Я играл вокруг onError, поэтому я попытался создать ошибку, используя большой объект документа xml.structDelete не влияет на мелкую копию?
<cfset XMLByRef = variables.parsedXML.XMLRootElement.XMLChildElement>
<cfset structDelete(variables.parsedXML, "XMLRootElement")>
<cfset startXMLShortLoop = getTickCount()>
<cfloop from = "1" to = "#arrayLen(variables.XMLByRef)#" index = "variables.i">
<cfoutput>#variables.XMLByRef[variables.i].id.xmltext#</cfoutput><br />
</cfloop>
<cfset stopXMLShortLoop = getTickCount()>
Ожидалось получить сообщение об ошибке, поскольку я удалил структуру, на которую ссылался.
От LiveDocs:
Переменная Назначение - Создает дополнительные ссылки, или псевдоним, к структуре. Любое изменение данных с использованием одного имени переменной изменяет структуру , к которой вы обращаетесь, используя другое имя переменной . Этот метод полезен, если вы хотите добавить локальную переменную в другую область или иначе изменить область переменной без удаление переменной из оригинальной области.
вместо этого я получил
580df1de-3362-ca9b-b287-47795b6cdc17
25a00498-0f68-6f04-a981-56853c0844ed
... ... . ..
db49ed8a-0ba6-8644-124a-6d6ebda3aa52
57e57e28-e044-6119-afe2-aebffb549342
петельные 12805 раз в 297 миллисекунд
<cfdump var = "#variables#">
показывает, что нет ничего в структуре, просто parsedXML.xmlRoot.xmlName со значением XMLRootElement , Я также попытался
<cfset structDelete(variables.parsedXML.XMLRootElement, "XMLChildElement")>
, а также structClear для обеих сторон.
Дополнительная информация об удалении из объекта документа xml. http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec22c24-78e3.html
Может кто-нибудь объяснить мою ошибочную логику? Благодарю.
Если вы могли бы обеспечить более простой, работоспособный образец кода, который был бы большим. Кроме того, попробуйте один и тот же код с onError, только на обычной странице CFML, он все равно дает одинаковые результаты? –
Ум, я могу попробовать, но он построен на реальных данных из XML-файла, за исключением того, что я изменил имена элементов для защиты данных. Это обычная страница CFML. onError находится в приложении.cfm и не запускается, как я ожидал бы этого @ –
Travis