Einzelnen Beitrag anzeigen

MathiasSimmack
(Gast)

n/a Beiträge
 
#5

Re: Probleme mit wohlgeformte-XML-Datei

  Alt 26. Mai 2005, 20:38
Zitat von toko:
ich benutze die MSXML-Komponente. Gibt es da auch den Indent-Parameter?
AFAIK nicht. Das müsstest du selbst programmieren, oder du findest dich damit ab, dass die XML-Datei ein wenig merkwürdig aussieht. Ich habe mir für eine Klasse zwei Funktionen geschrieben:
Delphi-Quellcode:
procedure THelp2Export.SetIndent(const RootNode: IXMLDOMNode; Level: integer);

  function CloneChar(const charSign: char; const Amount: integer): string;
  var
    i : integer;
  begin
    for i := 1 to Amount do
      Result := Result + charSign;
  end;

var
  lBreak : IXMLDOMText;
begin
  if(FXmlDoc <> nil) then
  try
    lBreak := FXmlDoc.createTextNode(widestring(CloneChar(#9,Level)));
    RootNode.appendChild(lBreak);
  except
  end;
end;

procedure THelp2Export.SetLineBreak(const RootNode: IXMLDOMNode);
var
  lBreak : IXMLDOMText;
begin
  if(FXmlDoc <> nil) then
  try
    lBreak := FXmlDoc.createTextNode(#13#10);
    RootNode.appendChild(lBreak);
  except
  end;
end;
die ich bspw. so aufrufe:
Delphi-Quellcode:
self.SetIndent(RootNode,1);
RootNode.appendChild(NewNode);
self.SetLineBreak(NewNode);

Zitat:
Wie kann ich bei der obigen XML-Datei ermitteln, wieviel tracks es zu einem cd-Knoten gibt?
Per Hier im Forum suchenXPath und Hier im Forum suchenselectNodes am einfachsten. Du musst nur den passenden Pfad angeben. Ist <cd> dein oberster Knoten? Dann könnte das so aussehen:
nodes := xmlDoc.selectNodes('/cd[id="1"]/track'); Aber dazu würde ich dir, neben den Fundstücken im Forum, die XML-Doku von Microsoft empfehlen.
  Mit Zitat antworten Zitat