2016-07-22 1 views
-2

Привет я хочу преуменьшать мой XML,XML: Минимизировать мой XML

говорят, что это 100 КБС, так что я хочу преуменьшать его и в гораздо меньшей столько, сколько я могу, но не хочу, чтобы сжать его 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 очень динамичен ... я знаю, что нет ничего похожего на динамику, но все же это так. он генерируется сервером самостоятельно, поэтому нет ничего, что можно установить как значение по умолчанию. он имеет только одно пространство имен и слишком короткое ... используется агиан и снова. элементы, которые могут быть добавлены как атрибут, я уже таким образом изменил свой xml. схема и часть dtd я не получаю ..... как это связано с минимизацией – NealGul

0

Я не уверен, что понимаю «Я хочу его минимизировать, но я не хочу его сжимать». В чем разница между сокращением и сжатием? Если разница в том, что вы хотите, чтобы сжатая форма была XML, которая сохраняет всю структуру и содержимое оригинала, вам не повезло: очень мало избыточности вы можете избавиться, сохраняя при этом документ логически эквивалентным, сформированный XML.

Вы уверены, что нет возможности для семантического сокращения, то есть устранения частей документа, которые не представляют интереса для получателя?

+0

Нет, когда я говорю, что хочу его минимизировать, но не сжимать это означает, что я хочу минимизировать файл, но все равно сохраняю его в том же формате (как в моем случае XML) и не хочу, чтобы он сжимал его как zip-файл. Нет, извините, но это тоже не имеет смысла для смыслового сокращения – NealGul