我正嘗試在AWS S3上的.xml文件中保存xml數據。所以我在字符串中構建xml並傳遞給aws。文件被寫入,但xml數據有一些網址,它在該網址上顯示Xml Parsing Error: Not Well formed
。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);
您可以給我任何參考或提示。 Xml應該在沒有編碼/解碼的情況下正確寫入。
我正在使用XMLwriter創建xml,但很難將xmlwriter數據轉換爲inputstream,然後將其發送到s3。這就是爲什麼我選擇創建字符串,然後將其轉換爲輸入流 –