使用xmlstarlet在值上使用双引号将XML转换为CSV

使用xmlstarlet在值上使用双引号将XML转换为CSV,xml,xml-parsing,xmlstarlet,Xml,Xml Parsing,Xmlstarlet,这显示了如何将xml转换为CSV 但是,我的一些值在值中有逗号。如何正确解析CSV?有没有办法给KeyF值添加双引号?如果是,语法是什么 范例 <keyF>val_1F</keyF> val_1F object/keyF将返回val_1F,但我需要“val_1F”您只需将“与;一起添加,唯一额外的复杂性是需要转义”,以便shell不解释它: xmlstarlet \ sel -T -t -m /root/record \ -v "concat('\"',

这显示了如何将xml转换为CSV

但是,我的一些值在值中有逗号。如何正确解析CSV?有没有办法给KeyF值添加双引号?如果是,语法是什么

范例

  <keyF>val_1F</keyF>
val_1F
object/keyF将返回val_1F,但我需要“val_1F”

您只需将
一起添加,唯一额外的复杂性是需要转义
,以便shell不解释它:

xmlstarlet \
  sel -T -t -m /root/record \
  -v "concat('\"', @id,'\";\"',object/keyF,'\";\"',object/keyG, '\"')" \
  -n test.xml

如果某些值包含引号字符怎么办?@Vanuan使用类似于
str:replace(object/可能有引号,“\”,“\\\”)
的方法以反斜杠转义引号。如何使用反斜杠进行转义需要:放入单引号?@schweik
“concat(\”,@id,“\”;“\”,…
xmlstarlet \
  sel -T -t -m /root/record \
  -v "concat('\"', @id,'\";\"',object/keyF,'\";\"',object/keyG, '\"')" \
  -n test.xml