Как да получа стойности на възел от xml файл и да го попълня с помощта на innosetup?

Опитвам се да прочета стойности от файла demo.xml с помощта на innosetup и искам да попълня някои стойности на sting. Ето моя файл demo.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<context>
<object name="sapconfig" class="com.iqc.egl.common.content.sap.SapConfig">
    <string value=""/>
    <string value="saplabs;usa"/>
    <string value="uae"/>
    <string value="002"/>   
</object>

Here i want output populated as: saplabs;usa and uae .Can anybody guide me.Your help will be appreciated.This xml is static.


person khanam    schedule 19.08.2015    source източник
comment
Няма начин да се направи разлика между тези атрибути. Всички те са value атрибути на маркера <string>. Единственият начин да извлечете само тези две вътрешни е да ги изберете по индекс. Но след като XML се промени и тези възли се разбъркат, ще получите различни стойности. Сигурен ли си, че това е, което искаш?   -  person TLama    schedule 19.08.2015
comment
@TLama, този xml ще остане същият.   -  person khanam    schedule 19.08.2015
comment
@TLama, можеш ли да ми кажеш как да чета стойности въз основа на индекс.   -  person khanam    schedule 19.08.2015
comment
Това нещо подобно.   -  person TLama    schedule 20.08.2015
comment
@TLama, Благодаря много. Връзката ви е страхотна. Работи добре.   -  person khanam    schedule 08.09.2015


Отговори (1)


Създайте екземпляр на Msxml2.DOMDocument за достъп до xml файла, както е обяснено тук Как за четене и запис на стойности на възел на XML документ?

Можете да итерирате дъщерните възли, като използвате get_childNodes (https://msdn.microsoft.com/en-us/library/windows/desktop/dd873811%28v=vs.85%29.aspx) и използвайте get_attribute (https://msdn.microsoft.com/en-us/library/windows/desktop/dd873626%28v=vs.85%29.aspx'), за да прочетете "стойност".

person Wosi    schedule 19.08.2015
comment
Wosi, не мога да разбера тези връзки, тъй като тези примери са на c++ - person khanam; 19.08.2015
comment
Ето някои фрагменти за това как да работите с MSXML с помощта на Delphi: gerixsoft.com/blog/delphi/ msxml В Pascal Script изглежда почти същото, с изключение на това, че използвате Variant вместо IXMLDOMNode и IXMLDOMNodeList. - person Wosi; 19.08.2015
comment
Wosi, innosetup и Delphi еднакви ли са? - person khanam; 19.08.2015
comment
Добре, ще опитам, мога ли да използвам вариант вместо IXMLDOMNODe,IXMLDOMNodeList?. - person khanam; 19.08.2015
comment
Да, можеш. Variant е тип данни за общо предназначение. Създаден е за всичко: delphibasics.co.uk/ RTL.asp?Name=Variant - person Wosi; 19.08.2015