Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.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 URL中的符号使XML格式不正确?_Java_Xml_Url_Amazon S3 - Fatal编程技术网

Java URL中的符号使XML格式不正确?

Java URL中的符号使XML格式不正确?,java,xml,url,amazon-s3,Java,Xml,Url,Amazon S3,我正在尝试将xml数据保存在AWS S3上的.xml文件中。因此,我以字符串形式构建xml并将其传递给aws。文件已写入,但xml数据有一些url,并且在该url上显示xml解析错误:格式不正确 请看下面的图片 它给了我新的错误=,但第二个错误不是第一个错误。若我对url进行编码,那个么它可以工作,但我不想对url进行编码,因为我需要在每个地方进行解码 这是我的密码 // create header for graphml String str = "<

我正在尝试将xml数据保存在AWS S3上的.xml文件中。因此,我以字符串形式构建xml并将其传递给aws。文件已写入,但xml数据有一些url,并且在该url上显示
xml解析错误:格式不正确

请看下面的图片

它给了我新的错误=,但第二个错误不是第一个错误。若我对url进行编码,那个么它可以工作,但我不想对url进行编码,因为我需要在每个地方进行解码

这是我的密码

        // create header for graphml
        String str = "<graphml xmlns=\"http://graphml.graphdrawing.org/xmlns\""
                + " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
                + " xsi:schemaLocation=\"http://graphml.graphdrawing.org/xmlns"
                + " http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd\">"
                + "<key id=\"n\" for=\"node\" attr.name=\"name\" attr.type=\"string\"/>"                    
                + "<graph id=\"G\" edgedefault=\"directed\">";
        StringBuilder sb = new StringBuilder();
        sb.append(str);

        Iterable<Node> vertices;

        vertices = Node_list;
        // Write all nodes
        for (Node vertex : vertices) {
            sb.append("<node id=" + "\"" + vertex.getId().toString() + "\""
                    + ">");             
                sb.append("<data key=\"n\">" + vertex.getName() + "</data>");               

            // end node tag
            sb.append("</node>");
        }           

        // closing graph tag and graphml tag
        sb.append("</graph>");
        sb.append("</graphml>");            
        // converting string in to inputstream
        InputStream stream = new ByteArrayInputStream(sb.toString()
                .getBytes("UTF-8"));
        // creating meta data graphml file
        ObjectMetadata metadata = new ObjectMetadata();
        metadata.setContentType("text/xml");
        metadata.setContentLength(sb.toString().getBytes().length);
        // send request to S3 to create folder
        PutObjectRequest putobjreq = new PutObjectRequest(
                CAWSConstants.BUCKETNAME, file, stream, metadata);
        // put graphml file to aws
        s3Client.putObject(putobjreq);
//为graphml创建标头
字符串str=“”
+ ""                    
+ "";
StringBuilder sb=新的StringBuilder();
某人附加(str);
不可分顶点;
顶点=节点列表;
//写入所有节点
用于(节点顶点:顶点){
某人加上(“”);
sb.append(“+vertex.getName()+”);
//结束节点标记
某人加上(“”);
}           
//关闭图形标记和graphml标记
某人加上(“”);
某人加上(“”);
//将中的字符串转换为inputstream
InputStream=新的ByteArrayInputStream(sb.toString()
.getBytes(“UTF-8”);
//创建元数据图形文件
ObjectMetadata=新的ObjectMetadata();
setContentType(“text/xml”);
metadata.setContentLength(sb.toString().getBytes().length);
//向S3发送创建文件夹的请求
PutObjectRequest PutObjectRequest=新的PutObjectRequest(
CAWSConstants.BUCKETNAME、文件、流、元数据);
//将graphml文件放入aws
s3Client.putObject(putobjreq);

你能给我一些参考或提示吗。Xml应该在不编码/解码的情况下正确写入

您必须将
替换为
&&
单独作为实体引用的第一个字符在XML中具有特殊意义。

一般来说,不要试图通过字符串连接来构建XML,使用专用API,如Java中可用的各种基于树的API(DOM、XOM、JDOM)之一或者。

我使用XMLwriter创建xml,但很难将XMLwriter数据转换为inputstream,然后发送到s3。这就是为什么我选择创建字符串,然后将其转换为inputstream