Какой XML-парсер мне следует использовать? - PullRequest
1 голос
/ 04 января 2010

У меня есть несколько большой файл (~ 500 КБ) с большим количеством мелких элементов (~ 3000). Я хочу выбрать один элемент из этого и проанализировать его в классе Java.

Атрибуты Упрощенный

<xml>     
<attributes>
  <attribute>
     <id>4</id>
     <name>Test</id>
  </attribute>

  <attribute>
     <id>5</id>
     <name>Test2</name>
  </attribute>

<!--3000 more go here-->
</attributes>

класс Упрощенный

public class Attribute{
  private int id;
  private String name;

  //Mutators and accessors

}

Мне нравится XPath, но люди предлагали Stax и даже VDT-XML. Что я должен делать.

Ответы [ 7 ]

3 голосов
/ 04 января 2010

500 кб не так уж и много. Если вам нравится XPath, сделайте это.

3 голосов
/ 05 января 2010

Мне нравится XPath, но люди предлагали Stax и даже VDT-XML. Что мне делать.

DOM, SAX и VTD-XML - это три различных способа анализа XML-документа. Примерно в этом порядке эффективности памяти. DOM требует более 5 раз памяти, поскольку XML-файл большой. SAX только немного более эффективен, VTD-XML использует только немного больше памяти, чем большой файл XML, примерно в 1,2 раза.

XPath - это просто способ выбрать элементов и / или данных из (проанализированного) XML-документа.

Другими словами, вы можете просто использовать XPath в сочетании с любым из анализаторов XML. Так что это в конце концов не является проблемой. Если вы просто хотите добиться максимальной эффективности и производительности памяти, используйте VTD-XML.

2 голосов
/ 05 января 2010

Я также прокомментировал выше, потому что есть несколько вариантов, чтобы рассмотреть - но по звучанию этого вашего первоначального описания, я думаю, вы могли бы обойтись здесь с простым процессором SAX: который, вероятно, будет работать быстрее (хотя это может и не произойти выглядят так же красиво, когда дело доходит до отображения класса Java), чем другие механизмы:

Здесь есть пример, который очень близко соответствует вашему примеру:

http://www.informit.com/articles/article.aspx?p=26351&seqNum=6

2 голосов
/ 04 января 2010

Моя любимая библиотека XML - Dom4j

2 голосов
/ 04 января 2010

Избегайте всего, что является DOM-парсером - в этом нет необходимости, особенно с файлом большого размера и относительно простым синтаксисом XML.

Какой из них использовать, извините, я их не использовал, поэтому я не могу дать вам больше рекомендаций, чем посмотреть на ваше лицензирование, производительность и поддержку (для вопросов).

1 голос
/ 04 января 2010

Если вам не нужна производительность, Apache Digester может быть полезен для вас, поскольку он уже инициализирует объекты Java после того, как вы определите правила.

1 голос
/ 04 января 2010

Всякий раз, когда мне приходится иметь дело с XML, я просто использую XMLBeans . Это может быть излишним для того, что вы ищете, но это облегчает жизнь (если вы знаете, как его использовать).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...