2016-07-22 22 views
-2

Hallo, Ich möchte, dass meine xml minify,XML: minify mein xml

sagen, dass es von 100 kbs ist, so kann ich es minify wollen und so viel weniger, so viel kann ich aber nicht wollen, Reißverschluss komprimieren. Ich habe versucht, es in einer Zeile zu machen, aber es gibt nicht viel Unterschied, aber 10 Prozent (ca.) und es wird toll sein, wenn ich es mit xslt tun kann, aber ich möchte nicht Java oder C# oder andere Programmierung verwenden Sprache. ich hoffe, ich mache mich klar, aber wenn noch Zweifel haben, dann kommentieren unten.

Danke

P.S. Ich benutze Eclipse IDE für alle Code schreiben

+1

Verwendet XML Namespaces? Wenn ja, könnten Sie versuchen, kürzere Namensraum-Präfixe zu verwenden. –

+0

ja tut es .... und ich kann sie nicht entfernen oder kann andere Namespaces verwenden oder sie verkürzen – NealGul

+1

Es ist nicht klar, was Sie meinen, indem Sie (im Gegensatz zum Komprimieren) verkleinern. Das Entfernen von Leerraum und das Erreichen einer 10% igen Reduktion liegt wahrscheinlich nahe am Limit. – mzjn

Antwort

1

Es gibt mehrere Möglichkeiten, die Größe Ihrer XML-Dateien zu reduzieren.

  • Zum Beispiel eine richtig gewählte Codierung. In UTF-32 belegt jedes Zeichen in Ihrer Datei 4 Bytes. Es ist besser, UTF-8 zu verwenden - dann werden alle Sonderzeichen wie: <>";'= ein Byte belegen. Aber in einigen Situationen wird es eine Menge von Zeichen geben, das heißt in UTF-8 wird auf 3-6 Bytes besetzen. Während die gleichen Zeichen in UTF-16 2 Bytes belegen. Sie sollten also die für Ihre Daten am besten geeignete Kodierung wählen.

  • Verwenden Sie Attribute anstelle von Elementen, wo immer dies möglich ist. Vergleichen Sie die Länge der resultierenden Strings:

    <person><firstname>John</firstname><lastname>Smit</lastname></person> 
    <person firstname="John" lastname="Smit"/> 
    
  • Verwenden Sie kurze Namespacepräfixe, anstelle eines langen Präfixe. Verwenden Sie für die am häufigsten verwendeten Daten standardmäßig einen Namespace, kein Präfix. Siehe:

    <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> 
    

    Bitte beachten Sie, dass Namespaces gleich sind, also für Parser sie identisch sind.

  • Manchmal ist das XML-Schema oder die DTD in einer XML-Datei mit den Daten gespeichert. Wenn Sie viele ähnliche Dateien haben, wird das Schema in jedem von ihnen gespeichert ist der zusätzliche Aufwand. Sie können ein Schema in einer separaten Datei erstellen.

  • Sie können die Daten in XML-Dateien ohne Standardwerte speichern. Diese Werte können beim Lesen automatisch hinzugefügt werden. Zum Beispiel

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

    Sehen Sie Marys Haustier? Aber es ist da! Es ist standardmäßig eine Katze.

    <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> 
    
  • Sie sollten alle Kommentare aus einer XML-Datei entfernen. Eine Beschreibung des Dateiformats kann separat gespeichert werden.

+0

Entschuldigung für mein schlechtes Englisch. Fühlen Sie sich frei, den Beitrag zu bearbeiten. Sie können Ihre eigene Antwort basierend auf meinem schreiben, schreiben Sie es in der richtigen Sprache. –

+0

mein XML ist sehr dynamisch ... Ich weiß, dass es nichts sehr dynamisches gibt, aber es ist immer noch. Es wird vom Server selbst erzeugt, so dass nichts als Standard eingestellt werden kann. es hat nur einen Namensraum und das auch einen sehr kurzen ... benutzt Agian und wieder. die elemente, die als attribut hinzugefügt werden können ich habe meine xml auf diese weise bereits transformiert. das Schema und der dtd-Teil bekomme ich nicht ... wie ist das mit der minification verbunden? – NealGul

0

Ich bin mir nicht sicher, ich verstehe "Ich möchte es zu minimieren, aber ich will es nicht komprimieren". Was ist der Unterschied zwischen Minimieren und Komprimieren? Wenn der Unterschied darin besteht, dass das komprimierte Formular XML ist, das die gesamte Struktur und den Inhalt des Originals beibehält, dann haben Sie kein Glück: Es gibt sehr wenig Redundanz, die Sie loswerden können, während Sie das Dokument logisch gleichwertig halten. gebildetes XML.

Sind Sie sicher, dass es keinen Spielraum für eine semantische Reduktion gibt, dh die Teile des Dokuments, die für den Empfänger nicht von Interesse sind, eliminiert werden?

+0

Nein, wenn ich sage, dass ich es verkleinern möchte, aber nicht komprimieren Es bedeutet, dass ich die Datei minimieren möchte, sie aber immer noch im selben Format (wie in meinem Fall XML) behalten möchte und sie nicht als Zip-Datei komprimieren möchte. Nein, tut mir leid zu sagen, dass aber auch keine semantische Reduktion möglich ist – NealGul