(現在 過去ログ2 を表示中)

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■174 / inTopicNo.1)  Xml形式ファイル読み込み(覚書)
  
□投稿者/ たゆー -(2006/10/01(Sun) 12:19:56)
    もしかして、桐でも漢字コードの違うファイルを変換しながら読み書きができる
    ようになるかも知れませんが、とりあえず覚書として
    たぶん、他にもっといい方法があるとは思いますが、思い付きです
    (漢字コードの変換は別として)


    仮に「都道府県.tbl」とします。そしてxmlファイルの内容は、下記とします
    −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
    <?xml version="1.0" encoding="UTF-8"?>
    <区切り文字列>
      <北海道>100</北海道>
      <青森>200</青森>
      <岩手>300</岩手>
    ・・・・
      <鹿児島>500</鹿児島>
      <沖縄>600</沖縄>
    </区切り文字列>
    −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
    これを、桐表に読み込む場合

    □作業表を準備し、テキストを読み込む
    ・[Xml形式]・・・ テキスト読み込み用
    ・[項目名]・・・ 項目名取出し
     計算式 #部分列([Xml形式],#文字位置([Xml形式],"<")+1,#文字位置([Xml形式],">")-#文字位置([Xml形式],"<")-1)
    ・[項目値]・・・ 項目値取出し
     #部分列([Xml形式],#文字位置([Xml形式],">")+1,#文字位置([Xml形式],"</")-#文字位置([Xml形式],">")-1)

    □転置書出しを行う
    ・上記で読み込んだデータでは、[項目名][項目値]の取り出しは終了しているが
    「都道府県.tbl」とは縦横が異なるので「転置書出」をして読み込めるようにします

    □読み込みを行う
    ・転置書出ししたファイルを読み込みを行う

    ・・・なんてしなければいかないのだろうか?。そして次の問題は
引用返信 [メール受信/OFF] 削除キー/
■175 / inTopicNo.2)  Re[1]: Xml形式ファイル読み込み(覚書)
□投稿者/ たゆー -(2006/10/01(Sun) 12:21:09)
    >そして次の問題は

    実はデータによって、項目名の重複が発生します。都道府県の場合は問題ないが、

    <開始日付>
      <年>2006</年>
      <月>2006</月>
      <日>2006</日>
    </開始日付>

    <終了日付>
      <年>2006</年>
      <月>2006</月>
      <日>2006</日>
    </終了日付>

    この場合は[年][月][日]が重複のため、転置書出しまでは出来ます。(桐9-2006
    にて確認済み)

    しかし読み込む表の項目名が

    [開始年][開始月][開始日]・[終了年][終了月][終了日]となってたり、
    [開始年月日]・[終了年月日]となってる場合は、きちんとしたイベントを作成
    する必要があります。

    もちろん、一つの項目を複数に分けて書き出すときも必要ですが。

引用返信 [メール受信/OFF] 削除キー/
■178 / inTopicNo.3)  Re[2]: Xml形式ファイル読み込み(覚書)
□投稿者/ hidetake -(2006/10/02(Mon) 11:43:50)
    > 実はデータによって、項目名の重複が発生します。都道府県の場合は問題ないが、
    >
    > <開始日付>
    >   <年>2006</年>
    >   <月>2006</月>
    >   <日>2006</日>
    > </開始日付>
    >
    > <終了日付>
    >   <年>2006</年>
    >   <月>2006</月>
    >   <日>2006</日>
    > </終了日付>

    基本的にはこのような構造のファイルが多いのでしょうけれど
    タグを改行で見やすく整形した形式以外のデータが流れてきたり、
    属性値に「改行」や「文字実体参照」や「数値文字参照」などの
    データが入り込んで来た場合の処理なども考慮しないといけない
    ですよね。

    桐で直接データを扱おうとした場合、ソースに改行が入っていな
    くて1行が4000文字以上のデータや、そもそものデータ(項目値)
    が4000文字以上のデータの場合。

    文字コードや改行の無い長いデータのことも考えると、事前に
    文字コード変換と、整形を前処理で行っておく方が安全なのです
    かね? 「文字実体参照」や「数値文字参照」の処理もか!?

引用返信 [メール受信/OFF] 削除キー/
■179 / inTopicNo.4)  Re[3]: Xml形式ファイル読み込み(覚書)
□投稿者/ たゆー -(2006/10/02(Mon) 14:42:37)
    やはり、なにをするときも
    >くて1行が4000文字以上のデータや、そもそものデータ(項目値)
    >が4000文字以上のデータの場合。
    この「4000文字」はネックになりますね

    ところで、メモ帳でのコードの件ですが・・・・

    いままで、通常のテキストファイル(SJIS)以外は、エディタ(EmEditor)で
    開いていました。
    てっきりメモ帳は「SJIS」しか扱えないものと思い込んでいました。が、
    今日、会社のPC(Winows Xp-SP2)で、「Xml形式」ファイルを開いたら
    「UTF-8」で、開けました

    画面右下のコードのところに「▼」が表示されないので、気が付かなかった
    だけでした
    ファイルを開く前に「UTF-8」を指定しておけばいいようです


426×154 => 250×90

utf8.jpg
/13KB
引用返信 [メール受信/OFF] 削除キー/
■180 / inTopicNo.5)  Re[4]: Xml形式ファイル読み込み(覚書)
□投稿者/ hidetake -(2006/10/02(Mon) 15:51:43)
    > いままで、通常のテキストファイル(SJIS)以外は、エディタ(EmEditor)で
    > 開いていました。
    > てっきりメモ帳は「SJIS」しか扱えないものと思い込んでいました。が、
    > 今日、会社のPC(Winows Xp-SP2)で、「Xml形式」ファイルを開いたら
    > 「UTF-8」で、開けました

    メモ帳は Unicode や UTF-8 は取り扱えるけど、EUC が扱えないのがネック
    ですね。Internet Explorer のソース表示にメモ帳をデフォルトの状態で
    使うようにしていると EUC-JP や ISO-202-JP のソースの場合は読めません。 orz

引用返信 [メール受信/OFF] 削除キー/
■181 / inTopicNo.6)  Re[5]: Xml形式ファイル読み込み(覚書)
□投稿者/ hidetake -(2006/10/02(Mon) 16:39:52)
    文字コード、改行の無い1行の長いファイルなどを考えると
    いずれにせよ桐だけでは不可能なわけですが、どうせプリ
    プロセッサが必要ならば、そいつでデータの取り出しまで
    行った方が無難なのかな?とも考えられます。

    XML2CSV とか XMLtoCSV ( XML to CSV も含む) を検索して
    みると、いくつかあるようですね。

    なるべく特別なツールや仕組みを導入せずに、できれば
    OS で標準的に備えている機能で何とかできないかと、探して
    みると、MSXML.DOMDocument を使って WSH で処理すれば
    XML から CSV ファイルを作ることは可能なようです。

    WSHによるDOMの利用について
    http://ash.jp/xml/wsh/index.htm

    あたりを使えば(+α部分も加えて)手っ取り早いかな!?

引用返信 [メール受信/OFF] 削除キー/
■186 / inTopicNo.7)  Re[6]: Xml形式ファイル読み込み(覚書)
□投稿者/ 緒方 -(2006/10/12(Thu) 09:53:38)
    No181に返信(hidetakeさんの記事)
    たゆーさん,hidetakeさん、いつもお世話になっております
    xmlをtxt又はcsvに変換して桐に取り込む方法を私が勉強した範囲で書いておきます
    これについて細かいことを聞かれても勉強不足でお答えできませんので勘弁してください
    xmlファイルをcsvファイルに変換する方法は1つはvbsを
    もう1つはxmlをレイアウトして表示するためのxslプロセッサのxalanを使用する方法です
    その他にあるかもしれませんが勉強不足で判りません

    例)vbsでxmlをcsvに変換する方法

    xmlFile = "月額変更届.xml"
    Set xmlDoc = CreateObject("Microsoft.XMLDOM")
    xmlDoc.Load(xmlFile)
    Set j1Nodes = xmlDoc.selectNodes("//事業所所在地x郵便番号x親番号")
    Set j2Nodes = xmlDoc.selectNodes("//事業所所在地x郵便番号x子番号")
    Set j3Nodes = xmlDoc.selectNodes("//事業所所在地x住所")
    Set j4Nodes = xmlDoc.selectNodes("//事業所名称")
    Set j5Nodes = xmlDoc.selectNodes("//事業主氏名")

    ************長いので途中省略

    Set h436Nodes = xmlDoc.selectNodes("//備考4")

    'CSV形式に整形
    line = ""
    itemNumber = j1Nodes.length - 1

    For i = 0 To itemNumber
    line = line &_
    j1Nodes(i).text & "," &_
    j2Nodes(i).text & "," &_
    j3Nodes(i).text & "," &_
    j4Nodes(i).text & "," &_
    j5Nodes(i).text & "," &_

    *********長いので途中省略

    h436Nodes(i).text & "," & vbCrLf

    Next
    'ファイル出力処理
    Set objFso = CreateObject("Scripting.FileSystemObject")
    csvFile = objFso.GetBaseName(xmlFile) & ".csv"

    Set objFolder = objFso.GetFolder(".")
    Set objTextFile = objFolder.CreateTextFile(csvFile)
    objTextFile.WriteLine(line)
    objTextFile.Close()
    MsgBox(csvFile & "が出力されました。")

    例)xalanでxmlをcsvに変換する方法

    set xalandir=c:\xalan\bin
    set classpath=%xalandir%\xalan.jar;%xalandir%\xerces.jar
    cd c:\jdk1.3.1\bin
    java org.apache.xalan.xslt.Process -in c:\xml\月額変更届.xml -xsl c:\xml\月額変更届.xsl -out c:\xml\月額変更届.csv
    pause
引用返信 [メール受信/OFF] 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

Mode/  Pass/

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

- Child Tree -
- Antispam Version -