Я пытаюсь закодировать вспомогательный класс с методами, которые должны читать XML-файл внутри моей папки ресурсов и получать некоторые значения, по которым я буду работать в моем основном классе. Моя структура проекта выглядит следующим образом:Прочитайте ресурс из класса-помощника
Project
|
|---src
| |
| |---Main.class
| |
| |---Helper.class
|
|---resources
|
|---MYDOC.xml
И код Helper.class я придумал до сих пор:
public class HelperClass {
static Document document;
static XPath xPath;
общественный вспомогательный класс() {
try {
InputStream stream = HelperClass.class.getResourceAsStream("MYDOC.xml");
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = builderFactory.newDocumentBuilder();
document = builder.parse(stream);
xPath = XPathFactory.newInstance().newXPath();
}
catch (FileNotFoundException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
};
статическая строка getValue() {
String result = "";
String expression = "/SOMETHING/SOMETHING/VALUE";
try {
result = xPath.evaluate(expression, document);
} catch (XPathExpressionException e) {
e.printStackTrace();
}
return result;
}}
Я создал папку ресурсов в качестве исходной папки, перепробовал много комбинаций пути к файлу (/MYDOC.xml, ресурсы/MYDOC.xml и т.д.), но я всегда получаю NullPointerException, когда я попробуйте использовать метод getValue() внутри Main.class.
Я был бы признателен, если бы кто-нибудь мог объяснить мне, что я делаю неправильно или лучший способ решить эту проблему, но я подозреваю, что в целом весь мой код плохой.
Подводя итог: Я хотел бы сделать HelperClass, который читает и получает значения из XML-файла, а затем использует эти методы внутри другого класса.
Благодарим вас за любую помощь/ответ/критику.
Compile в .jar файл, и посмотреть в него с помощью zip-утилиты. Он должен содержать MYDOC.xml. Если ресурсы не должны быть исходной папкой в среде IDE. Если в банке путь - это ресурсы/MYDOC.xml, используйте это как относительный или абсолютный путь «/resources/MYDOC.xml». И помните о чувствительной к регистру письме. –
Перейдите в свою папку классов, сможете ли вы увидеть XML-файл вместе с вашими .class-файлами? –
@JoopEggen Скомпилировал его, файл находится внутри. –