Добавянето на голям XML елемент към XML файл винаги е неуспешно

Моят NSIS инсталатор се опитва да добави малко XML към съществуващ XML файл.

Моят проблем: Не успява да добави възел/елемент към файла, защото според мен има твърде много поделементи вътре в възела/елемента.

Как мога да добавя този XML елемент към съществуващ XML файл?

ЗАБЕЛЕЖКА Ако намаля дължината на низа OVERRIDES_TEXT с около половината, тогава кодът правилно добавя възела към XML файла. Всичко по-дълго и се проваля. Възможно ли е да се напише съдържанието (не текст, а поделементи) на елемент/възел в 2 стъпки?

${xml::LoadFile} "${xmlFileName}" $R0
${xml::GotoPath} "${elementPath}" $R0
${xml::CreateNode} '<Overrides>${OVERRIDES_TEXT}</Overrides>' $R0
${xml::InsertAfterNode} $R0 $R1  # always fails here $R1 = -1

# below is the string that causes the error
!define OVERRIDES_TEXT "<Override>\
                <Key>EXDS_CUSTOMISATION_REVISION</Key>\
                <Value>1</Value>\
                <State>0</State>\
            </Override>\
            <Override>\
                <Key>CUSTOMER_USER_4D</Key>\
                <Value>C:\12d\10.00\Customers\EXDS_Customisation\EXDS_User</Value>\
                <State>0</State>\
            </Override>\
            <Override>\
                <Key>CUSTOMER_LIB_4D</Key>\
                <Value>C:\12d\10.00\Customers\EXDS_Customisation\EXDS_User_Lib</Value>\
                <State>0</State>\
            </Override>\
            <Override>\
                <Key>USER_4D</Key>\
                <Value>C:\12d\10.00\User</Value>\
                <State>0</State>\
            </Override>\
            <Override>\
                <Key>USER_LIB_4D</Key>\
                <Value>C:\12d\10.00\User_Lib</Value>\
                <State>0</State>\
            </Override>\
            <Override>\
                <Key>EXDS_USER_LIB</Key>\
                <Value></Value>\
                <State>0</State>\
            </Override>\
            <Override>\
                <Key>EXDS_USER</Key>\
                <Value></Value>\
                <State>0</State>\
            </Override>\
            <Override>\
                <Key>VERSION_12D_MODEL</Key>\
                <Value>10.0</Value>\
                <State>0</State>\
            </Override>\
            <Override>\
                <Key>CPATH</Key>\
                <Value>$$CUSTOMER_LIB_4D:$$CUSTOMER_USER_4D:$$USER_LIB_4D:$$USER_4D:$$LIB_4D:$$SET_UPS_4D</Value>\
                <State>0</State>\
            </Override>\
            <Override>\
                <Key>AUTHORIZATION_4D</Key>\
                <Value>C:\12d\10.00\nodes.4d</Value>\
                <State>0</State>\
            </Override>\
            <Override>\
                <Key>USE_NAMES_COMMENT_4D</Key>\
                <Value>1</Value>\
                <State>0</State>\
            </Override>\
            <Override>\
                <Key>FILE_READ_ADD_TO_VIEW_4D</Key>\
                <Value>1</Value>\
                <State>0</State>\
            </Override>\
            <Override>\
                <Key>GENIO_WILDCARD_4D</Key>\
                <Value>*.inp</Value>\
                <State>1</State>\
            </Override>\
            <Override>\
                <Key>RUN_MACROS_FILE_4D</Key>\
                <Value>$$USER\macros.4d</Value>\
                <State>0</State>\
            </Override>\
            <Override>\
                <Key>PROJECT_DETAILS_4D</Key>\
                <Value>$$USER\project_details.dtl</Value>\
                <State>0</State>\
            </Override>\
            <Override>\
                <Key>REPORT_HEADER_4D</Key>\
                <Value>1</Value>\
                <State>0</State>\
            </Override>\
            <Override>\
                <Key>AUTO_TIN_SYNC_4D</Key>\
                <Value>1</Value>\
                <State>0</State>\
            </Override>\
            <Override>\
                <Key>AUTO_MODEL_SYNC_4D</Key>\
                <Value>1</Value>\
                <State>0</State>\
            </Override>\
            <Override>\
                <Key>SHARE_CHECK_INTERVAL_4D</Key>\
                <Value>300</Value>\
                <State>0</State>\
            </Override>\
            <Override>\
                <Key>SHARED_ELEMENT_COLOUR_4D</Key>\
                <Value>blue</Value>\
                <State>0</State>\
            </Override>\
            <Override>\
                <Key>SHARING_ELEMENT_COLOUR_4D</Key>\
                <Value>red</Value>\
                <State>0</State>\
            </Override>\
            <Override>\
                <Key>DEFAULT_PLAN_PLOT_SCALE_4D</Key>\
                <Value>500</Value>\
                <State>0</State>\
            </Override>\
            <Override>\
                <Key>DWG_PLOT_SEED_FILE_4D</Key>\
                <Value>$$USER\EXDS_Acad_Plot_Template.dwt</Value>\
                <State>0</State>\
            </Override>\
            <Override>\
                <Key>DEFAULT_RASTER_DPI_4D</Key>\
                <Value>600</Value>\
                <State>0</State>\
            </Override>\
            <Override>\
                <Key>OPENGL_VIEW_BACKING_STORE_4D</Key>\
                <Value>2</Value>\
                <State>0</State>\
            </Override>\
            <Override>\
                <Key>MULTI_LINE_TEXT_4D</Key>\
                <Value>1</Value>\
                <State>0</State>\
            </Override>\
            <Override>\
                <Key>NEW_MTF_EDITOR_AUTOPAN_DEFAULT_4D</Key>\
                <Value>1</Value>\
                <State>0</State>\
            </Override>\
            <Override>\
                <Key>WINDOWS_VEHICLE_PATH_4D</Key>\
                <Value>C:\Apps\VPath</Value>\
                <State>0</State>\
            </Override>\
            <Override>\
                <Key>chainage_equality_4d</Key>\
                <Value>1</Value>\
                <State>0</State>\
            </Override>\
            <Override>\
                <Key>XML_4D</Key>\
                <Value>1</Value>\
                <State>0</State>\
            </Override>\
            <Override>\
                <Key>USE_V10_BOXING_CALCS_4D</Key>\
                <Value>1</Value>\
                <State>0</State>\
            </Override>"

person sazr    schedule 13.08.2012    source източник
comment
Работи ли, ако направите XML по-кратък и не многоредов?   -  person Petr Abdulin    schedule 13.08.2012
comment
@PetrAbdulin да, така е, ако направя XML по-кратък, ще опитам многоредов.   -  person sazr    schedule 13.08.2012
comment
Опитах се да направя низа един ред - не многоредов - възникна същата грешка.   -  person sazr    schedule 13.08.2012


Отговори (2)


Не съм сигурен дали този синтаксис е правилен:

${xml::InsertAfterNode} $R0 $R1

не може ли да бъде

${xml::InsertAfterNode} "$R0" $R1 

?

person Petr Abdulin    schedule 13.08.2012
comment
благодаря за съвета. Опитах това, което казахте (предавайки като низ), но пак не успя. Някакви идеи какво се обърка - person sazr; 13.08.2012

Вероятно достигате ограничението за дължина на низа на NSIS, опитайте да добавите един <Override> възел наведнъж с XML приставката...

person Anders    schedule 13.08.2012