環境:
言語[VB6.0] XMLパーサ[MSXML4.0](多分)
ペンネームにもある通り、WEB関係についての知識は余りありません。
以下に、質問内容を記述しますが、あほなことを言っているようであれば、
ご指摘いただければと思います。(勉強します。)
XML形式のファイルの読み込み/新規書込み処理を実装する為、MSXMLを使用しています。(更新は無し)
こちらの掲示板の履歴等を活用しまして、何とか読込処理は実装できそうな
形まで辿り付き、書込みについても要素、属性、CDATA等の値を生成し、
生成後もブラウザで想定どおりの階層構造で表示できることまで確認しました。
但し、エディタ等で開いてみると行数的には2行で出力されています。
1行目:<?xml version="1.0"?>
2行目:<House Address="abc" Name="123"><Member Name ="xxx"/></House>
この2行目以降をなんとかタグ間等で、テキストとしても改行された状態で生成したいのですが、
MSXMLでの制御は無理なのでしょうか?
もしかしたら、XML(もしくはパーサ)というのは改行というものを意識するものでは
無く、おかしなことを言っているのかもしれませんが、納品先でブラウザが無く、
エディタ等でしかデータの確認ができない場合に、クレームが予想されますので、
ご質問させていただきました。
以下、へぼいとは思いますが、書込み処理のソースです。
--------------------------------------------
'' XML定義
Set domDoc = New DOMDocument
'' XML修飾文?生成
Set domDeclare = domDoc.createProcessingInstruction("xml", "version=""1.0""")
'' XML修飾文アペンド
Call domDoc.appendChild(domDeclare)
'' 要素の生成と属性の設定処理
'' 要素の生成
Set domRootEle = domDoc.createElement("Sample")
Call domRootEle.setAttribute("x", "XXX")
Call domRootEle.setAttribute("y", "YYY")
Call domRootEle.setAttribute("z", "ZZZ")
''子ノードの要素取得
Set dom2ndElmnt = domDoc.createElement("Test")
Call domRootEle.appendChild(dom2ndElmnt)
Call dom2ndElmnt.setAttribute("a", "AAA")
Call dom2ndElmnt.setAttribute("b", "BBB")
Call dom2ndElmnt.setAttribute("c", "CCC")
・・・(中略)・・・
'CDATAセクションを設定
Set domCdata = domDoc.createCDATASection("ABCDEFGHIJKLMN")
Call dom4thElmnt.appendChild(domCdata)
''書込み
Call domDoc.Save("C:\SAMPLE.XML")
--------------------------------------------------------------
ただ、一度実験で、改行コードを含んだXMLファイルを読み込み、
そのまま別ファイル名で書込み(save)処理を行い、Diffをとりました。
そうすると改行位置は異なっているのですが、書込みした方は改行された状態で
保存されていました。
各要素や属性等のデータは全て同じでした。
書き込み前のデータは改行のみで、とくにタブ等はいれていなかったのですが、
書込み後のファイルは綺麗にネストされていて、タブも自動で入っていたみたい
です。
このようなことを体験すると、新規作成でもそのような構造にしたいと
思いを寄せているのですが、なかなかそのように行きません。
新規作成と読込後保存(更新)でどのようにオブジェクトの動作が違うのかなど
も教えていただけるとありがたいです・・・図々しいですが(^^;;;
現在、書込み処理は、"appendChild"を使用する以外のスキルは私には
ありません。
もし、なにかいい方策、抜け道等ありましたら、宜しくご教授お願い致します。
すみません。。。やってしまいました。
二重送信してしまい、申し訳ございませんでした。
ツイート | ![]() |