我在处理 XML 响应并将其格式化为 CSV 时遇到问题,然后可以将其作为 XLS 打开并在单个单元格中查看整个响应。我知道..这也不是我会做的,但他们得到了他们所要求的。
到目前为止,我已经尝试使用字符串生成器。这已经成功地将响应格式化为单行字符串,我已经通过将其写入文本文件并将其复制到 Eclipse 来测试这一点。当我在 XML 周围放置单引号时,它会变成一个字符串。
当尝试以单行格式获取相同的响应并将其粘贴到 csv 文件中时..csv 文件在 XML 字符串中以逗号分隔,并将响应放置在几十个单元格中。
BufferedReader br = new BufferedReader(new FileReader(new File('responseXml.txt')));
String l;
StringBuilder sb = new StringBuilder();
while((l=br.readLine())!= null){sb.append(l.trim());
File respfile = new File("outresp.txt")
respfile.append(l)
println respfile.text
//verified single line string
respContents = new File("outresp.txt").text
}
File file = new File('outXML.csv')
file.append(respContents)
println file.text
// open csv still broke across many lines
我想要的是将单个 xml 字符串放入单个 xls 单元格中。
最佳答案
要将值放入 csv(excel)中的单列中,您有两种选择:
- 删除所有换行符 (
\r\n
) 和逗号 (,
) - 将每个双引号 (
"
) 替换为两个双引号 (""
),并用双引号包裹整个值。
第二个变体允许您将原始(多行)字符串格式保留在一个 Excel 单元格中。
这是第二种变体的代码:
//assume you have whole xml in responseXml variable
def responseXml = '''<?xml version="1.0"?>
<aaa text="hey, you">
<hello name="world"/>
</aaa>
'''
//take xml string in double quotes and escape all doublequotes
responseXml = '"'+ responseXml.replaceAll(/"/,'""') + '"'
def csv = new File('/11/1.csv')
csv.setText("col1,col2,xml\nfoo,bar") // emulate some existing file
csv.append(",${responseXml}\n")
结果:
关于java - 使用字符串生成器将 XML 放入单个 csv/xls 列中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58280694/