2016-07-22 89 views
-2

嗨,我想來縮小我的XML,XML:再壓縮我的XML

說,這是100個KBS的,所以我要來縮小它和少得多的一樣多,我可以,但不希望壓縮ZIP它。我試圖在一行中做出來,但它並沒有給它太大的區別,但是10%(大約) ,如果我可以使用xslt做它,但我不想使用java或c#或任何其他編程語言。 我希望我自己清楚,但如果仍有疑問,請在下面留言。

謝謝

P.S.我正在使用Eclipse IDE的所有代碼編寫

+1

XML是否使用名稱空間?如果是這樣,你可以嘗試使用更短的名稱空間前綴。 –

+0

是的,它確實....我不能刪除它們或可以使用任何其他命名空間或縮短它們 – NealGul

+1

目前還不清楚你縮小(而不是壓縮)的意思。去除空白並減少10%可能非常接近極限。 – mzjn

回答

1

有幾種方法可以減少XML文件的大小。

  • 例如,正確選擇的編碼。在UTF-32中,文件中的每個字符將佔用4個字節。採用UTF-8更好 - 然後所有特殊字符,如:<>";'=將佔用一個字節。但在某些情況下,會有很多字符,即UTF-8將佔用3-6個字節。而UTF-16中的相同字符將佔用2個字節。所以你應該選擇最適合你的數據的編碼。

  • 儘可能使用屬性而不是元素。比較結果字符串的長度:不是很長的前綴

    <person><firstname>John</firstname><lastname>Smit</lastname></person> 
    <person firstname="John" lastname="Smit"/> 
    
  • 使用短命名空間前綴。對於最常用的數據,默認情況下使用名稱空間,沒有前綴。參見:

    <longprefix:person xmlns:longprefix="www.example.com"> 
        <longprefix:firstname>John</longprefix:firstname> 
        <longprefix:lastname>Smit</longprefix:lastname> 
    </longprefix:person> 
    
    <p:person xmlns:p="www.example.com"> 
        <p:firstname>John</p:firstname> 
        <p:lastname>Smit</p:lastname> 
    </p:person> 
    

    請注意,名稱空間是相同的,因此對於解析器它們是相同的。

  • 有時XML模式或DTD與數據一起存儲在XML文件中。如果你有很多類似的文件,模式存儲在每個文件中都是額外的開銷。您可以在一個單獨的文件中創建一個模式。

  • 您可以將數據存儲在沒有默認值的xml文件中。這些值可以在閱讀時自動添加。例如

    <person pet="dog"> 
        <name>John</name> 
    </person> 
    
    <person> 
        <name>Mary</name> 
    </person> 
    

    你看到瑪麗的寵物嗎?但它在那裏!這是一個默認的貓。

    <xs:element maxOccurs="unbounded" name="person"> 
        <xs:complexType> 
         <xs:sequence> 
          <xs:element name="name" type="xs:string" /> 
         </xs:sequence> 
         <xs:attribute name="pet" type="xs:string" default="cat" /> 
        </xs:complexType> 
    </xs:element> 
    
  • 您應該刪除XML文件中的所有註釋。文件格式的說明可以單獨存儲。

+0

對不起,我的英語不好。隨意編輯帖子。你可以根據自己的情況編寫自己的答案,用適當的語言重寫。 –

+0

我的xml是非常動態的...我知道沒有什麼像非常動態,但它仍然是。它由服務器自行生成,因此沒有任何設置可以設置爲默認值。它只有一個命名空間,而且這個命名空間太短了......使用了agian和再次。可以作爲屬性添加的元素已經以這種方式轉換了我的xml。架構和dtd的一部分,我沒有得到.....這是如何與縮小有關 – NealGul

0

我不知道我明白「我想縮小它,但我不想壓縮它」。縮小和壓縮有什麼區別?如果不同之處在於您希望壓縮後的表單是保留原始結構和內容的XML,那麼您運氣不好:您可以擺脫的冗餘很少,同時仍然保持文檔在邏輯上等效良好 - 形成了XML。

您確定沒有語義縮減的範圍,即刪除收件人不感興趣的文檔部分嗎?

+0

不,當我說我想縮小它但不壓縮它,這意味着我想縮小文件,但仍保持它在相同的格式(在我的情況下XML),並不希望它壓縮爲zip文件。 不,不好意思,但也沒有語義縮減的範圍 – NealGul