Некоторое время назад я написал класс, который получает определенный набор значений из определенных файлов XML.Затем он может распечатать результаты в консоли, и он работает просто отлично.Но, конечно, я не создал класс для печати на консоль
Мне нужно получить значения в базу данных.Существует отдельный класс, который обрабатывает ввод db.
Но у меня большие проблемы с получением локальных переменных из метода, который зацикливает файлы XML, возвращенные / переданные в класс базы данных.
Iне может получить значения из основного метода, который читает их из файлов XML (значения из «узлов» Nodelist).Я пытался использовать кучу глобальных переменных, но они не обновляются.Я прочитал, что использование «глобальных переменных» было правильным способом, но я также прочитал (и обнаружил при кодировании), что JAVA делает копию из реальных битов внутри объекта и работает с этим внутри метода.Поэтому, когда метод завершается, все изменения, вносимые в переменные, игнорируются, и значение объекта остается таким же, каким оно было до запуска метода.
Вот код, который дает проблему:
import org.w3c.dom.*;
import javax.xml.xpath.*;
import javax.xml.parsers.*;
import java.io.IOException;
import org.xml.sax.SAXException;
public class xmlGrabber {
public static String NAME = "StartNaam"; // declare the global variable
public String main(String[] args)
throws ParserConfigurationException, SAXException,
IOException, XPathExpressionException {
DocumentBuilderFactory domFactory =
DocumentBuilderFactory.newInstance();
domFactory.setNamespaceAware(true);
DocumentBuilder builder = domFactory.newDocumentBuilder();
String docuInvoer = "C:/temp/document.xml";
Document doc = builder.parse(docuInvoer);
XPath xpath = XPathFactory.newInstance().newXPath();
// XPath Query for showing all nodes value
XPathExpression expr = xpath.compile("//@fieldvalue");
Object result = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
for (int i = 1; i < 24; i++) {
// System.out.println(nodes.item(i).getNodeValue());
//String bla = nodes.item(1).getNodeValue();
String NAME = nodes.item(1).getNodeValue(); //Modify value of NAME
} return NAME;
}
// public static String NAME(){
// System.out.println(NAME+"test");
// return NAME;
// }
}
При попытке прочитать переменную в другом классе, например, так:
public class Debug {
public static void main(String[] args) {
xmlGrabber.main(null);
String name = xmlGrabber.NAME;
System.out.println(name);
}
}
Среда IDE выдает ошибку: NAME не может быть разрешена или не является полем