2010-11-29 3 views
4

У меня есть документ XML на входе, который очень отформатированный (это файл проект Delphi, если кто-то заботится) - непоследовательны отступами, а пустые строки, строки узлов сосредоточенных вместе:Как переформатировать XML программно?

<BorlandProject><Delphi.Personality><Parameters><Parameters Name="HostApplication">C:\Some\Path\Filename.exe</Parameters> <!--etc--> <Excluded_Packages> 


</Excluded_Packages> 

Я хочу переформатировать его в чем-то приятное , Какой простой способ сделать это программно, с Win32/COM? Если MSXML, как мне это сделать?

Я хотел бы также указать блок отступов (вкладка/несколько пробелов).

Я попытался с помощью MSXML обертку TXmlDocument Delphi и это действительно удалить пустые строки и отступы узлы с закладками, но не расщепляется линии, как это:

<BorlandProject><Delphi.Personality><Parameters><Parameters Name="HostApplication">C:\Some\Path\Filename.exe</Parameters> <!--etc--> <Excluded_Packages> 
+0

Вы посмотрели xsltproc? – 2010-11-29 15:39:54

+0

Кажется, это инструмент командной строки, но я новичок в XML/XSLT, поэтому, если я что-то недопонимаю, пожалуйста, уточните. – himself 2010-11-29 15:48:12

ответ

15

я проверил функцию FormatXMLData в Дельфах файл проекта и работает нормально, правильно отпечатайте все строки.

проверить этот код.

uses 
XMLIntf, 
XMLDoc; 

Procedure FormatXMLFile(const XmlFile:string); 
var 
    oXml : IXMLDocument; 
begin 
    oXml := TXMLDocument.Create(nil); 
    try 
    oXml.LoadFromFile(XmlFile); 
    oXml.XML.Text:=xmlDoc.FormatXMLData(oXml.XML.Text); 
    oXml.Active := true; 
    oXml.SaveToFile(XmlFile); 
    finally 
    oXml := nil; 
    end; 
end;