2010-11-29 114 views
4

我輸入一個XML文件,它是非常格式化(這是德爾福的項目文件,如果有人關心) - 不一致的縮進,空行,混爲一談節點的字符串:如何以編程方式重新格式化XML?

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


</Excluded_Packages> 

我想把它重新格式化爲一件好事。使用Win32/COM以編程方式執行該操作最簡單的方法是什麼?如果MSXML,我該怎麼辦呢?

我希望能夠指定縮進單位(選項卡/幾個空格)。

我試圖使用Delphi的MSXML包裝TXMLDocument的,它確實刪除空行和縮進節點有標籤,但並不分裂像這樣的臺詞:

<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; 
相關問題