Каков наилучший способ извлечь две части данных из файла XML? - PullRequest
2 голосов
/ 05 апреля 2010

У меня есть XML-документ, который находится в преобразованном до или после FO состоянии, из которого мне нужно извлечь некоторую информацию. В предварительном случае мне нужно вытащить два тега, которые представляют pageWidth и pageHeight, а в последнем случае мне нужно извлечь параметры page-height и page-width из определенного тега (я забыл, какой это из верх моей головы).

То, что я ищу, - это эффективный / легко обслуживаемый способ получить эти два элемента. Я хотел бы прочитать документ только один раз, выбирая две вещи, которые мне нужны.

Сначала я начал писать что-то, что будет использовать BufferedReader + FileReader, но потом я занимаюсь поиском строк, и это мешает, когда теги занимают несколько строк. Затем я посмотрел на DOMParser, который, кажется, был бы идеальным, но я не хочу читать весь файл в память, если бы мог помочь, поскольку файлы потенциально могут быть большими, а теги - поиск почти всегда будет близко к началу файла. Затем я посмотрел на SAXParser, но это похоже на большую кучу сложного перебора для того, чего я пытаюсь достичь.

У кого-нибудь есть совет? Или простые реализации, которые достигли бы моей цели? Спасибо.

Редактировать: я забыл упомянуть, что из-за различных ограничений, которые я использую, все, что я использую, должно быть "встроено" в ядро ​​Java, в котором я не могу использовать и / или загружать какие-либо сторонние инструменты XML.

Ответы [ 3 ]

4 голосов
/ 05 апреля 2010

Хотя XPath очень хорош для запросов данных XML, я не знаю о хорошей и быстрой реализации XPath для Java (все они используют модель DOM по крайней мере).

Я бы порекомендовал вам придерживаться StAX. Это очень быстро даже для огромных файлов, и его API курсора довольно тривиален:

XMLInputFactory f = XMLInputFactory.newInstance();
XMLStreamReader r = f.createXMLStreamReader("my.xml");
try {
  while (r.hasNext()) {
    r.next();
    . . .
  }
} finally {
  r.close()
}

Обратитесь к Учебник по StAX и XMLStreamReader javadocs для получения дополнительной информации.

1 голос
/ 05 апреля 2010

Вы можете использовать XPath для поиска ваших тегов. Здесь - руководство по формированию выражений XPath. И здесь - статья об использовании XPath с Java.


Простой в использовании парсер (dom, sax) - это dom4j . Это было бы намного проще в использовании, чем встроенный SAXParser.

0 голосов
/ 06 апреля 2010

try "XMLDog"

Это использует саксофон для оценки xpaths

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