Как читать XML-файл с Java?
мне не нужно читать сложные XML-файлов. Я просто хочу прочитать следующий файл конфигурации с простейшей чтения XML
<config>
<db-host>localhost</db-host>
<db-port>3306</db-port>
<db-username>root</db-username>
<db-password>root</db-password>
<db-name>cash</db-name>
</config>
Как прочитать вышеуказанный XML-файл с помощью чтения XML через Java?
http://i45.tinypic.com/2eamoeg.jpg
9 ответов
Так как вы хотите разобрать файлы конфигурации, я думаю commons-configuration было бы лучшим решением.
конфигурация Commons предоставляет общий интерфейс конфигурации, который позволяет приложению Java считывать данные конфигурации из различных источников (включая XML)
Мне нравится jdom:
SAXBuilder parser = new SAXBuilder();
Document docConfig = parser.build("config.xml");
Element elConfig = docConfig.getRootElement();
String host = elConfig.getChildText("host");
вы можете использовать простой парсер DOM для чтения xml-представления.
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
dom = db.parse("config.xml");
Если вам просто нужно простое решение, включенное в Java SDK (начиная с 5.0), проверьте пакет XPath. Я уверен, что другие лучше, но это было все, что мне нужно. Вот пример:
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.xml.sax.InputSource;
...
try {
XPath xpath = XPathFactory.newInstance().newXPath();
InputSource inputSource = new InputSource("strings.xml");
// result will equal "Save My Changes" (see XML below)
String result = xpath.evaluate("//string", inputSource);
}
catch(XPathExpressionException e) {
// do something
}
строки.в XML
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="saveLabel">Save My Changes</string>
</resources>
существует несколько синтаксических анализаторов XML для Java. Один я использовал и особенно дружественный составляет помощи jdom. И под дружественным к разработчику я подразумеваю " Java oriented "(т. е. вы работаете с объектами в своей программе), а не" document oriented", как некоторые другие инструменты.
Я бы порекомендовал Commons Digester
, что позволяет анализировать файл без написания пачек кода. Он использует ряд правил для определения того, какое действие должно выполняться при столкновении с данным элементом или атрибутом (типичным правилом может быть создание определенного бизнес-объекта).
для аналогичного случая использования в моем приложении я использовал JaxB. С Jaxb чтение XML-файлов похоже на взаимодействие с Java POJOs. Но чтобы использовать JAXB, вам нужно иметь xsd для этого xml-файла. Вы можете найти более подробную информацию здесь
Если вы хотите иметь возможность читать и записывать объекты в XML напрямую, вы можете использовать кинокомпании xStream
хотя я еще не пробовал XPath, поскольку он только что привлек мое внимание, я попробовал несколько решений и не нашел ничего, что работает для этого сценария.
Я решил создать библиотеку, которая удовлетворит эту потребность, пока вы работаете в соответствии с предположениями, упомянутыми в readme. Он имеет то преимущество, что он использует SAX для анализа всего файла и возврата его пользователю в виде карты, чтобы вы могли искать значения как ключ - > значение.
https://github.com/daaso-consultancy/ConciseXMLParser
Если что-то отсутствует, любезно сообщите мне о недостающем элементе, поскольку я разрабатываю его только на основе потребностей других и себя.