用java编写xml

用java编写xml,java,xml,file,remote-access,fileoutputstream,Java,Xml,File,Remote Access,Fileoutputstream,我需要编写一个xml文件,它位于191.160.100.122/Test/conf/Test.xml 我使用的java代码是 public static void writeXml(PropertyForm propForm , LinkedList flaglist , LinkedList list){ try{ String filePath = "http://191.160.100.122/Test/conf/test.xml"; URL ur

我需要编写一个xml文件,它位于191.160.100.122/Test/conf/Test.xml

我使用的java代码是

public static void writeXml(PropertyForm propForm , LinkedList flaglist , LinkedList list){

    try{
        String filePath = "http://191.160.100.122/Test/conf/test.xml";
        URL url = new URL(value);
        URLConnection con = url.openConnection();
        con.setDoOutput(true);
        OutputStream os = con.getOutputStream();


        XMLStreamWriter writer = factory.createXMLStreamWriter(os);

        writer.writeStartDocument();
        writer.writeStartElement("xmldata");

        writer.writeStartElement(propForm.getBuss_hrs_name());
        writer.writeStartElement("StartTime");
        writer.writeCharacters(propForm.getBuss_hrs_start());
        writer.writeEndElement();
        writer.writeStartElement("EndTime");
        writer.writeCharacters(propForm.getBuss_hrs_end());
        writer.writeEndElement();

        writer.writeEndElement();

        writer.writeStartElement("Messages");
        for(int i=0;i<flaglist.size();i++){
            System.out.println("======flag=====");
            System.out.println(flaglist.get(i).getPname().length()+"---"+ flaglist.get(i).getPname()+"---"+flaglist.get(i).getKey()+"---"+flaglist.get(i).getVal());

            writer.writeStartElement(flaglist.get(i).getKey());

            writer.writeCharacters(flaglist.get(i).getVal());
            writer.writeEndElement();


        }
        writer.writeEndElement();
        for(int j=0;j<list.size();j++){
            if(list.get(j).getPname()!=null && list.get(j).getPname().equals("Holiday")){
                System.out.println(list.get(j).getPname()+"---"+list.get(j).getKey()+"---"+list.get(j).getVal());

                writer.writeStartElement(list.get(j).getPname());
                writer.writeStartElement("Date");
                writer.writeCharacters(list.get(j).getVal());
                writer.writeEndElement();
                writer.writeStartElement("Name");
                writer.writeCharacters(list.get(j).getKey());
                writer.writeEndElement();

                writer.writeEndElement();

            }
        }
        writer.writeEndDocument();

        writer.flush();
        writer.close();
    }
    catch(Exception e){
        e.printStackTrace();
    }
}
publicstaticvoidwritexml(propertyformpropform、LinkedList标志列表、LinkedList列表){
试一试{
字符串文件路径=”http://191.160.100.122/Test/conf/test.xml";
URL=新URL(值);
URLConnection con=url.openConnection();
con.设置输出(真);
OutputStream os=con.getOutputStream();
XMLStreamWriter writer=factory.createXMLStreamWriter(os);
writer.writeStartDocument();
writer.writeStarteElement(“xmldata”);
writer.writeStarteElement(propForm.getBuss_hrs_name());
writer.writeStartElement(“StartTime”);
writer.writeCharacters(propForm.getBuss_hrs_start());
writer.writeedelement();
writer.writeStart元素(“结束时间”);
writer.writeCharacters(propForm.getBuss_hrs_end());
writer.writeedelement();
writer.writeedelement();
writer.writeStart元素(“消息”);

对于(inti=0;i,这通常不是Web服务器的行为方式,也不是您向其发布内容的方式

当您为
191.160.100.122/Test/conf/Test.xml
执行HTTP GET时,您正在通过
191.160.100.122
端口80与Web服务器联系,并要求它向您提供名为
/Test/conf/Test.xml
的资源。服务器如何处理此请求以及决定返回什么完全取决于服务器是,以及它的配置方式。(它可能从目录中读取文件,或者运行一些数据库查询,或者执行一些代码,或者理论上的任何东西。)

您将需要查看服务器是什么,并确定如何使其返回与此请求不同的结果,然后设置“writer”进程以执行返回新数据所需的任何操作



FWIW您当前的代码没有“失败”,因为它没有按照您的想法运行。您正在打开与上述URL的连接,然后通过此连接将内容发送到服务器。该请求“成功”,但不能保证服务器会对您提供的数据执行任何特定操作,尤其是不会执行您预期的操作。(事实上,除非您显式打开HTTPPUT连接(而不是默认GET),对于服务器来说,根据该请求修改任何内容都不是一个好主意。)

@DownVoter。请发表一些关于DownVoter的评论。这有助于我了解原因并纠正我的问题。请看这篇文章,谢谢你的回答。你能给出一些想法来满足我的要求吗?你可能想使用其他协议,如ftp或scp,而不是http。@Humanbes,正如我所说,这完全取决于Web服务器是什么如果它是一个简单的Apache服务器,那么你需要在服务器硬盘上的特定目录中创建一个文件,使用类似scp的东西(正如Moh-Wow所建议的)。但是如果它是一个Java servlet容器,那么这根本不起作用,也没有“开箱即用”的功能在这种或许多其他情况下有效的方法。