2017-02-14 13 views
1

enter image description here xmlをcsvに変換するサンプルコードがありますが、ExcelでCSVファイルを開くと、抽象的な要素のために3つの列が表示されます。 "、"。カンマをエスケープするにはどのように修正できますか? "あなたのCSV内の値を引用するおかげどのようにエスケープするか "、"カンマをCSVに変換するとき

xquery version "1.0-ml"; 
declare namespace mdr="http://learning-convert-xml-csv.com/record"; 
declare namespace meta="http://learning-convert-xml-csv.com/meta"; 

let $doc := <records xmlns:record="http://learning-convert-xml-csv.com/record"> 
      <meta:Metadata xmlns:meta="http://learning-convert-xml- csv.com/meta"> 
      <meta:Title>Beginning MarkLogic with XQuery.</meta:Title> 
      <meta:Abstract>In software engineering and computer science, abstraction is a technique for arranging complexity of computer systems   </meta:Abstract> 

let $Title := ($doc/meta:Metadata/meta:Title) 
let $Title := fn:string-join($Title,",") 

let $abstract:=  ($doc/meta:Metadata/meta:Abstract) 
let $abstract:=  fn:string-join($abstract,",") 

let $quote:= 
for $myData in ($Title,$abstract) 
    return fn:concat("'",$myData,"'") 

let $output := 
     text{ 
       fn:concat(fn:string-join(($quote),","),"&#x0D;&#x0A;" 
       ) 
     } 

return xdmp:save(fn:concat("c:\temp\","test.csv"),$output) 
+0

CSVで行を囲んで引用符を付ける場合は、Excelの場合は問題ありません。あなたのcsvファイルの例を投稿してください。そうすれば、人々は問題をより詳細に把握できます。 –

+0

しかし、$ valueに二重引用符 ""がある場合、コードfn:concat( "" "、" $ value "" "")は機能しません。 – thichxai

答えて

1

二重引用符を使用の代わりに、単一引用符。これを使うと、二重引用符を除いて他の文字をエスケープする必要はありません。良いCSVパーサーは、二重引用符が使用されている限り、値内の行末を解析することすらできます。 https://tools.ietf.org/html/rfc4180

HTH:

もRFC 4180を参照してください!

関連する問題