java - 使用字符串生成器将 XML 放入单个 csv/xls 列中不起作用

标签 java xml csv groovy soapui

我在处理 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)中的单列中,您有两种选择:

  1. 删除所有换行符 (\r\n) 和逗号 (,)
  2. 将每个双引号 (") 替换为两个双引号 (""),并用双引号包裹整个值。

第二个变体允许您将原始(多行)字符串格式保留在一个 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")

结果:

enter image description here

关于java - 使用字符串生成器将 XML 放入单个 csv/xls 列中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58280694/

相关文章:

java - 如何使用迭代器在属于数组列表的对象中查找特定标题

xml - Groovy 中的 UnEscape Xml

xml - 如何使用 XSLT 从 XML 文件中删除不需要的元素和属性

javascript - 使用 FastAPI 和 JS 提取上传 .csv

xml - 彭塔霍 : How to convert a string datatype into XML datatype using pentaho transformation

javascript - 从 csv 文件获取 D3 中的桑基图

java - ListView setOnItemClickListener 未执行

java - 缩短 Java 代码的语言技巧?

java - 如何调整 Swing 文本字段的大小?

xml - XSLT 注释标签不输出内容?