Каков наилучший способ импортировать XML в базу данных (с использованием Java) - PullRequest
2 голосов
/ 02 апреля 2009

Я только что написал программу для импорта данных из XML-файла в базу данных, используя dom4j. Он завершается серией операторов xpath, заключенных в Java, - и это работает, но я твердо уверен, что есть лучший способ сделать это.

Каков предпочтительный способ импорта данных из XML в БД?

Ответы [ 6 ]

4 голосов
/ 02 апреля 2009

В зависимости от того, какой у вас XML, JAXB (который является стандартной частью Java SE начиная с версии 1.6) может быть наиболее простым способом решения этой проблемы. Просто создайте класс, похожий на вашу XML-структуру, вставьте в поля setter и getters и аннотацию @XmlRootElement в верхней части класса. Тогда что-то вроде

Unmarshaller um = JAXBContext.newInstance(YourClass.class).createUnmarshaller();
YourClass input = (YourClass) um.unmarshal(new FileReader("file.xml"));

волшебным образом преобразует ваш XML-файл в объект Java. Тогда должно быть легко записать в БД по вашему выбору.

2 голосов
/ 02 апреля 2009

Я нашел Простой очень простым в использовании для создания объектов Java из XML. Мы используем это для настройки конфигурации по умолчанию, которую затем можем сохранить с помощью Hibernate.

1 голос
/ 02 апреля 2009

У меня часто была одна и та же проблема, и хотелось бы, чтобы 10 лет назад у меня были те же инструменты, что и сейчас.

Если вам нужно прочитать существующий XML в обычные классы Java, я лично считаю, что Apache Digester намного элегантнее и проще в использовании, чем dom4j, поскольку вы просто указываете отображение.

Затем используйте Hibernate для записи материалов в базу данных.

0 голосов
/ 14 апреля 2009

Это, безусловно, зависит от того, что именно вы делаете. Я предполагаю, что вы хотите извлечь данные из документов XML. Если это так, xpath может работать нормально, но лично мне все еще нравится связывание данных: читать XML, связываться с объектами java, получать данные через обычные методы доступа Bean / POJO. Или, что еще лучше, если вы используете ORM, привязка к / от объектов, которые может использовать ORM (например, hibernate).

За привязку datd я бы проголосовал за JAXB или XStream . Я бы использовал любую альтернативу DOM, если бы использовался xpath.

0 голосов
/ 02 апреля 2009

Есть несколько вопросов, которые вы должны задать себе, прежде чем пытаться что-либо еще:

  • стоит ли чистить? Если это приложение будет использоваться не часто, «не исправляйте то, что не сломано».
  • это будет часто меняться? В этом случае простота обслуживания и удобочитаемость имеют первостепенное значение, и dom4j, вероятно, неплохо с этим справится.
  • производительность имеет какое-либо значение? Если это не имеет никакого значения, ваше приложение работает в половине случаев, вернитесь к предыдущему пункту: «лучше» будет означать только аккуратнее в этом случае.
0 голосов
/ 02 апреля 2009

Это действительно зависит от формата вашего XML-файла. Можете ли вы уточнить дальше?

В моем случае у меня есть приложение, в котором простой синтаксис пары Key-> Value хранится в XML, в котором я использую DOM для перебора узлов и генерирования SQL для вставки данных.

использование XPath для этого было бы идеальным решением

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