2015-01-17 3 views
0

다음 코드가 있는데 일반 텍스트로 추출하려고하지만 그 작업을 수행 할 수 없습니다.Inno 설치 : XML 노드를 추출하여 보여줍니다.

코드가 작동하지만 필요한 것은 ExpandConstant 필드에 표시하는 것입니다. 여러 가지 방법을 시도했지만 지금까지는 행운이 없습니다. 당신이 ExpandConstant 함수 호출에 전달 될 수있는 문자열에 값을 인라인하려면

function LoadValueFromXML(const AFileName, APath: string): string; 
    var 
     XMLNode: Variant; 
     XMLDocument: Variant; 
    begin 
     Result := ''; 
     XMLDocument := CreateOleObject('Msxml2.DOMDocument.3.0'); 
     try 
     XMLDocument.async := False; 
     XMLDocument.load(AFileName); 
     if (XMLDocument.parseError.errorCode <> 0) then 
      MsgBox('The XML file could not be parsed. ' + 
      XMLDocument.parseError.reason, mbError, MB_OK) 
     else 
     begin 
      XMLDocument.setProperty('SelectionLanguage', 'XPath'); 
      XMLNode := XMLDocument.selectSingleNode(APath); 
      Result := XMLNode.text; 
     end; 
     except 
     MsgBox('An error occured!' + #13#10 + GetExceptionMessage, mbError, MB_OK); 
     end; 
    end; 

    procedure CurPageChanged(CurPageID: Integer); 
    begin 
     if CurPageID = CustomPageID then 
     CustomEdit.Text := LoadValueFromXML('C:\Games\World_of_Tanks_test\WoTLauncher.xml', '//info/patch_info_urls/item'); 
    end; 

    procedure ClienteWot(); 
    var 
     StaticText: TNewStaticText; 
    begin 
     StaticText := TNewStaticText.Create(WizardForm); 
     StaticText.Parent := WizardForm.SelectComponentsPage; 
     StaticText.Left := 425; 
     StaticText.Top := ScaleY(40); 
     StaticText.Font.Style := [fsBold]; 
     //StaticText.Font.Color := clRed; 
     StaticText.Caption := ExpandConstant('Cliente WOT: -->>> Show XML Url <<<---'); 
    end; 
+0

XML f ormat는 줄을 모른다. 노드가 있습니다. 하지만 어쨌든 ''과 같이 전체 노드 텍스트를 가져 오는 방법을 묻고 있습니까? – TLama

+0

좋아, 나도 알아하지 못했지만, 그래, 난 이 값이 DeXon

+0

그냥 내가 당신의 요구 사항을 가지고 있는지 확실 것에 대해 (이후 상상할 수없는 노드의 값을 원하는 전체 노드 텍스트의 사용). 당신의 예제에서'this value'라는 노드의 값을 얻고 싶습니까? 또는 전체 노드 텍스트 (내가 생각하는 것) '이 값은'입니까? – TLama

답변

0

, 당신은 예를 들어, 사용할 수 있습니다 Format 기능 :

var 
    ... 
    URL: string; 
begin 
    ... 
    URL := LoadValueFromXML('C:\MyFile.xml', '//node/subnode'); 
    StaticText.Caption := ExpandConstant(Format('{username} %s', [URL])); 
end; 

상기 의사 코드 예는 XML 값을 판독하고 URL 변수 반환 값을 할당한다. 그런 다음 두 번째 줄의 내부 문 평가 : (%s 대신에) 주어진 문자열에 URL 문자열 값을 인라인

Format('{username} %s', [URL]) 

와 같은 문자열을 생성합니다

'{username} www.example.com' 

그리고이 문자열 ExpandConstant 함수 호출 (외부 문)에 의해 처리되고 다음과 같은 정적 텍스트 캡션에 할당됩니다.

'MyUserName www.example.com'