2017-12-06 2 views
0

xml 파일에서 일부 값을 구문 분석해야합니다. 문제는 - 내가 델파이와 함께 할해야 = ( 파일이델파이 간단한 xml 구문 분석

<?xml version="1.0"?> 
<Items version="1.0"> 
    <Item BackupFileName="d:\data.bak"> 
    <Rating Rate="TOP"/> 
    </Item> 
    <Item BackupFileName="d:\data2.bak"> 
    <Rating Rate="OTHER"/> 
    </Item> 
    .... 
</Items> 

매우 간단합니다 그리고 난 그냥이 filepaths {와 문자열 배열 필요 "D : \ data.bak를", "D. : \ data2.bak ", ...} 는 좀 봤하고 해결책을 발견 (생각만큼)

url := 'D:\Backups.xml'; 
    xml := CreateOleObject('Microsoft.XMLDOM') as IXMLDOMDocument; 
    xml.async := False; 
    xml.load(url); // or use loadXML to load XML document using a supplied string 
    if xml.parseError.errorCode <> 0 then 
    raise Exception.Create('XML Load error:' + xml.parseError.reason); 

    nodes_row := xml.selectNodes('/Items'); 
    for i := 0 to nodes_row.length - 1 do 
    begin 
    node := nodes_row.item[i]; 
    result := node.selectSingleNode('Item').text; 
end; 

좋아하지만 결과는 무효 항상 것 같습니다 한 당신이 제공하거나 쉬운을 참조하십시오 없습니다. 이것에 대한 해결책은?

+0

나중에 for 루프를 사용할 때'xml.selectNodes ('/ Items/Item'); '가 아니어야합니까? – ViRuSTriNiTy

+0

액세스 위반이 있습니다. O_o – zohak

+4

내장 된 XML 파서 클래스를 사용하지 않는 이유는 무엇입니까? –

답변

0

IXMLNode.Attributes 속성을 사용하거나 IXMLNode.AttributeNodes 속성은 노드에 텍스트가 포함되어 있지 않기 때문에 실제로 속성 텍스트를 찾고 있습니다.