java - 如何写入不同包中的xml文件

标签 java xml xml-parsing

SRC Files
    - mainPackage
        IMFL.java
        performXMLSettings.java
    - XML
        settings.xml

我正在尝试写入位于不同包中的 xml 文件,如上面的包列表所示。 我用来写入 XML 文件的代码如下所示:

公共(public)类performXMLSettings{

    /**
 *
 * @param xml
 * @param root
 * @param equals
 * @return String
 * @throws ParserConfigurationException
 * @throws SAXException
 * @throws IOException
 */
public static String get(String xml, String root, String tag) throws ParserConfigurationException, SAXException, IOException {
    String ret = "";

    InputStream istream = performXMLSettings.class.getClass().getResourceAsStream(xml);
    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
org.w3c.dom.Document doc = dBuilder.parse(istream);
    doc.getDocumentElement().normalize();
    //ret = doc.getElementsByTagName(tag).item(0).getNodeValue();

    NodeList settings = doc.getElementsByTagName(root).item(0).getChildNodes();
    for(int j=0;j<settings.getLength();j++) {
        if(settings.item(j).getNodeName().equals(tag)){
            ret = settings.item(j).getTextContent();
        }
    }
    return ret;
}
/**
 *
 * @param xml
 * @param root
 * @param tag
 * @param value
 * @throws ParserConfigurationException
 * @throws SAXException
 * @throws IOException
 * @throws TransformerConfigurationException
 * @throws TransformerException
 * @throws InterruptedException
 */
public static void set(String xml, String root, String tag, String value) throws ParserConfigurationException, SAXException, IOException, TransformerConfigurationException, TransformerException, InterruptedException, URISyntaxException {

    InputStream istream = performXMLSettings.class.getClass().getResourceAsStream(xml);
    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
org.w3c.dom.Document doc = dBuilder.parse(istream);
    doc.getDocumentElement().normalize();
    Node rootTag = doc.getElementsByTagName(root).item(0);
    if(rootTag.hasChildNodes()) {
        NodeList nl = rootTag.getChildNodes();
        for (int i = 0; i < nl.getLength(); i++) {
            rootTag.removeChild(nl.item(i));
        }
    }

    Element element = doc.createElement(tag);
    element.setNodeValue(value);
    rootTag.appendChild(element);

    TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File(performXMLSettings.class.getResource(xml).toURI()));
transformer.transform(source, result);
}

}

当我尝试从 xml 文件中获取信息时,我得到了我需要的信息,但写入过程不起作用。它不会抛出任何错误,但 xml 文件中没有写入任何新内容。

这就是我使用写作的方式:

performXMLSettings.set("/XML/settings.xml", "设置", "主机", hst);

有人知道为什么吗?

谢谢!

最佳答案

看来,我无法写回包含该包的 jar 文件,除非我解压 Jar,覆盖 xml,然后再次打包 Jar。

关于java - 如何写入不同包中的xml文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26583334/

相关文章:

java - 哪些低级任务可以在 JVM 上完成,但不能用 Java 表达?

java - 如何将MySQL数据库中的数据插入到表中显示到Android?

ios - Objective-C:for循环没有执行?

xml - 使用 XML 和 XSD 映射数据库的最佳实践

linux - 解析 XML - 从标签中减去值

java - 新创建的用户未存储在 Liferay 的数据库中

java - 如何在 Maven 的 WAR 项目中指定 EJB 引用?

c# - 在 C# 中读取 Facebook 提要

java - 更快的多重解析 : SAX or DOM

java - BlackBerry 使用 SAX 解析器解析 UTF-8 XML 文件