2013-09-05 4 views
3

мне нужно разобрать следующий XML:Извлечь значения внутри XML

<?xml version="1.0" encoding="UTF-8" ?> 
<revista numero="2226" data="03/09/2013"> 
    <processo numero="902987089"> 
    <despachos> 
     <despacho codigo="IPAS139"/> 
    </despachos> 
    <titulares> 
     <titular nome-razao-social="AAAAA" pais="BR" uf="PR"/> 
    </titulares> 
    </processo> 
    <processo numero="902812165"> 
    <despachos> 
     <despacho codigo="IPAS029"/> 
    </despachos> 
    <titulares> 
     <titular nome-razao-social="XXXX" pais="BR" uf="SC"/> 
    </titulares> 
(...) 

Я не испытывал вообще с XML. Я использую IXMLDocument в Delphi.

LNodeElement := LDocument.ChildNodes.FindNode('revista'); 
(...) 
for I := 0 to LNodeElement.ChildNodes.Count - 1 do 
(...) 

Мой вопрос, как я могу достичь значения атрибута numero внутри тега <processo>? Но если бы добродушная душа могла поделиться небольшим примером, это было бы очень признательно.

ответ

5

Например так:

uses 
    XMLDoc, XMLIntf; 

procedure TForm3.Button1Click(Sender: TObject); 
var 
    I: Integer; 
    NumberAttr: IXMLNode; 
    XMLDocument: IXMLDocument; 
    ProcessNodes: IXMLNodeList; 
begin 
    // load an XML file 
    XMLDocument := LoadXMLDocument('c:\File.xml'); 
    // take the list of all "revista/processo" nodes 
    ProcessNodes := XMLDocument.DocumentElement.ChildNodes; 
    // and iterate that "processo" node collection 
    for I := 0 to ProcessNodes.Count - 1 do 
    begin 
    // try to find the "numero" attribute for currently iterated "processo" node 
    NumberAttr := ProcessNodes[I].AttributeNodes.FindNode('numero'); 
    // if the "numero" attribute was found, show its value (or do something else) 
    if Assigned(NumberAttr) then 
     ShowMessage(NumberAttr.Text); 
    end; 
end; 
+0

Спасибо! Оно работает. –

+0

Подождите, но это неправильно, не так ли? Вы собирались получить значение '' тега, не так ли? Я повторяю '' теги ... Вам не хватает самого важного слова в предложении *, как я могу получить значение «numero» внутри тега *, но какой тег там отсутствует. Атрибут 'numero' находится в обоих тегах в' ', а также' 'теги. – TLama

+1

Правильно. Мне нужно «numero» внутри . Первое не нужно. –