Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在不同的包中写入xml文件_Java_Xml_Xml Parsing - Fatal编程技术网

Java 如何在不同的包中写入xml文件

Java 如何在不同的包中写入xml文件,java,xml,xml-parsing,Java,Xml,Xml Parsing,我试图写入位于不同包中的xml文件,如上面的包列表所示。 我用来写入XML文件的代码如下所示: 公共类性能设置{ SRC Files - mainPackage IMFL.java performXMLSettings.java - XML settings.xml /** * *@param-xml *@param根 *@param等于 *@返回字符串 *@throws-ParserConfigurationException

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

公共类性能设置{

SRC Files
    - mainPackage
        IMFL.java
        performXMLSettings.java
    - XML
        settings.xml
/**
*
*@param-xml
*@param根
*@param等于
*@返回字符串
*@throws-ParserConfigurationException
*@SAXException
*@抛出异常
*/
公共静态字符串get(字符串xml、字符串根、字符串标记)抛出ParserConfiguration异常、SAXException、IOException{
字符串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();

对于(int j=0;j看来,我无法写回包含包的jar文件,除非我将解包jar,覆盖xml,然后再次打包jar。

打印xml变量值以查看您在哪里设置内容,并在这里显示PLZ您的意思是我在哪里使用设置代码?打印变量xml的值以测试您是否在写ng在正确的位置?是否有任何异常或错误?这是结果:/XML/settings.XML
    /**
 *
 * @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);
}