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
XPath und
selectNodes 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.