![]() |
Wie in MSXML Kommentare ignorieren?
Hallo,
ich lese eine XML Datei mit folgenden Code ein:
Delphi-Quellcode:
Bin gerade draufgekommen, als ich bestimmte Teile von XML zu Testzwecken mit <!-- --> auskommentieren wollte, dass es anscheinend nicht funktioniert. Und zwar findet der Parser anscheinend noch XML-Tags im auskommentierten Bereich.
var
Doc: TXMLDocument; xmlpath:String; begin Doc := TXMLDocument.Create(Self); try Doc.LoadFromFile(xmlpath); Doc.Active := True; Doc.Encoding := 'UTF-8'; finally Doc.Free; end; end; Weiß jemand, wie man die Parameter setzt, so dass Kommentare auch in XML ignoriert werden? Oder darf man keine in XML nichts auskommentieren? Lg, jus |
AW: Wie in MSXML Kommentare ignorieren?
Schau dir doch mal in der Doku an, welche NodeTypes es gibt
![]() Fällt dir dort etwas auf? (9. Eintrag ist interessant) ;) |
AW: Wie in MSXML Kommentare ignorieren?
@Sir Rufo: ehrlich gesagt, verstehe ich es nicht ganz. Dort steht ja nur, dass Kommentare keine "child nodes" haben? :?:
Lg, jus |
AW: Wie in MSXML Kommentare ignorieren?
Hallo,
also ohne selbst damit gearbeitet zu haben, würde ich die Anmerkung von Sir Rufo so verstehen, dass auch Kommentare eingelesen werden, du musst diese also wohl selbst ignorieren. mfg |
AW: Wie in MSXML Kommentare ignorieren?
Ein Knoten hat die Eigenschaft NodeType. Und wenn dieser
Delphi-Quellcode:
ist, dann ist der Knoten ein Kommentar. :|
NodeType = TNodeType.ntComment
Delphi-Quellcode:
program Project5;
{$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils, WinApi.ActiveX, Xml.XmlIntf, Xml.XmlDoc ; procedure justXmlThings(); const xmlContent = '<root><node1/><!-- this is a comment --><node2/></root>'; var nodes: IXMLNodeList; nodeIndex: Integer; node: IXmlNode; begin nodes := LoadXMLData(xmlContent).DocumentElement.ChildNodes; for nodeIndex := 0 to Pred(nodes.Count) do begin node := nodes.Get(nodeIndex); if (node.NodeType <> TNodeType.ntComment) then WriteLn(node.NodeName); end; end; begin try CoInitializeEx(nil, COINIT_APARTMENTTHREADED); try justXmlThings(); finally CoUninitialize(); end; except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; WriteLn('end.'); readln; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz