dポイントプレゼントキャンペーン実施中!

下記のようなXMLを作成で質問です。
<Data-3>の要素が14万件あります。
VB6で下記のような記述を行った場合、処理速度がとても遅かったです。
(既存のシステムがまだVB6です・・・)
速度改善できる記述を教えて頂けないでしょうか。
それともVB6だと限界でしょうか。

また、Vb.NETでDataTableでWriteXmlを使い作成しようかとも思ったのですが
<Data-3>だけの繰り返しの場合はできるのですが
<Data-1><Data-2>がある場合の記述方法が分かりません。
そもそのDataTableでの作成は可能でしょうか。

お知恵を拝借できると大変助かります。

<?xml version="1.0" encoding="Shift_JIS"?>
<Data>
<Data-1>aaaa</Data-1>
<Data-2>bbbb</Data-2>
<Data-3>
<ID>1000</ID>
<kana>テスト 1000</kana>
</Data-3>
<Data-3>
<ID>1001</ID>
<kana>テスト 1001</kana>
</Data-3>
:
:
</Data>

■VB6
'MSXMLオブジェクトを生成
Set xmlDocument = New MSXML2.DOMDocument
'要素<Data>を生成
Set xmlRoot = xmlDocument.appendChild(xmlDocument.createElement("Data"))
'要素<Data-1>を生成
Set xmlData = xmlDocument.createElement("Data-1")
xmlData.Text = "aaaa"
Call xmlRoot.appendChild(xmlData)
'要素<Data-2>を生成
Set xmlData = xmlDocument.createElement("Data-2")
xmlData.Text = "bbbb"
Call xmlRoot.appendChild(xmlData)

Do Until xxxx
'要素<Data-3>を生成
Set xmlData = xmlDocument.createElement("Data-3")
'要素の子要素を生成して要素に追加
Set xmlChildData = xmlData.appendChild(xmlDocument.createElement("ID"))
xmlChildData.Text = "ID"
Set xmlChildData = xmlData.appendChild(xmlDocument.createElement("kana"))
xmlChildData.Text = "kana"
'1人分の要素に追加
Call xmlRoot.appendChild(xmlData)
Loop
'----改行付きにする ----
'Writerでインデント設定する
oXmlWriter.indent = True
'ReaderとWriterを紐づける
Set oXmlReader.contentHandler = oXmlWriter
'作成したXMLをReaderで読み込む
oXmlReader.parse xmlDocument.xml
'改行付きに変換
xmlDoc2.loadXML oXmlWriter.output
'Shift_JISに変換
Set domDecXml = xmlDoc2.createProcessingInstruction("xml", "version=""1.0"" encoding=""Shift_JIS""")
'元々のencodingを無視して変更する
Call xmlDoc2.replaceChild(domDecXml, xmlDoc2.firstChild)

'改行付きで出力
xmlDoc2.save ("c:\test.xml")
'各オブジェクトの開放は省略

A 回答 (1件)

XMLは未経験ですが。



><Data-3>の要素が14万件あります。

テキストファイルとして出力させ、その後にエディタで残りを作成するのは無理なものなのでしょうか?
無理であるなら読み飛ばしてください。
    • good
    • 0
この回答へのお礼

お礼が大変遅くまりました。
言われてみればそうですよね。目からウロコという感じです。
テンパっていました。。。
vb6だと20~40秒かかっていたのですが、
Vb.NETでDataTableを使いその後編集で行追加をしたら4秒程度でした。
ありがとうございました。

お礼日時:2020/02/10 10:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!