簡體   English   中英

URL中的“&”號會使XML格式不正確?

[英]Ampersand in URL makes XML not well formed?

我正在嘗試將XML數據保存在AWS S3上的.xml文件中。 所以我正在構建字符串xml並將其傳遞給aws。 寫入文件,但是xml數據具有一些url,並且顯示Xml Parsing Error: Not Well formed在該url上格式Xml Parsing Error: Not Well formed

請看下面的圖片。

在此處輸入圖片說明

在此處輸入圖片說明

它給我錯誤new =,但第二個錯誤而不是第一個錯誤。 如果我對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);

你能給我任何參考或提示嗎? Xml應該正確進行寫入而無需編碼/解碼。

您必須用&amp;替換& &amp; 在URL中,因為&單獨在XML中作為實體引用的第一個字符具有特殊含義。

通常,不要嘗試通過字符串連接來構建XML,而應使用專用的API,例如Java中可用的各種基於樹的API(DOM,XOM,JDOM)或https://docs.oracle.com/javase/7 /docs/api/javax/xml/stream/XMLStreamWriter.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM