• 締切済み

VB6でXMLを作成しているのですがエラーが出ます

VB6でXML作成のプログラムを作ったのですが、読み取り専用のノードを編集しようとしましたのメッセージボックスが表示されます。 どなたかどこが悪いのか、ご教授願います。 ソースコードは以下の通りです。 Dim xmlDoc As MSXML.DOMDocument 'XMLドキュメント Dim xmlPI As IXMLDOMProcessingInstruction 'XML宣言 Dim node(3) As IXMLDOMNode '要素 Dim attr As MSXML.IXMLDOMAttribute '属性 Dim newText Set xmlDoc = New MSXML.DOMDocument 'XMLドキュメントを作成します。 'XML宣言を追加します。 Set xmlPI = xmlDoc.appendChild(xmlDoc.createProcessingInstruction("xml", "version=""1.0"" encoding=""UTF-8""")) '<ClinicalDocument>要素を追加します。 Set node(1) = xmlDoc.createElement("ClinicalDocument") Call xmlDoc.appendChild(node(1)) 'xmlns:xsi属性を追加します。 Set attr = xmlDoc.createAttribute("xmlns:xsi") Call node(1).Attributes.setNamedItem(attr) attr.nodeValue = "http://www.w3.org/2001/XMLSchema-instance" ''ここでエラーが出ます '<Customer>要素を追加します。 Set node(2) = xmlDoc.createElement("Customer") Call node(1).appendChild(node(2)) Call node(2).appendChild(xmlDoc.createTextNode(vbNewLine)) 'id属性を追加します。 Set attr = xmlDoc.createAttribute("id") Call node(2).Attributes.setNamedItem(attr) attr.nodeValue = "1" '<Name>要素を追加します。 Set node(3) = xmlDoc.createElement("Name") Call node(2).appendChild(node(3)) Set newText = xmlDoc.createTextNode("Jhon") Call node(3).appendChild(newText) 'XMLドキュメントの出力 xmlDoc.save (App.Path & "\customer.xml")

みんなの回答

回答No.1

んー、理由は知らんけど, どうやら setNamedItem 実行後にはそのNodeのNodeValueは変更できないみたいなので 変更してからsetNamedItemを実行することになりそう。 で、追加後に変更したくなったら removeNamedItemすれば 変更できるようになるようなので もう一回setNamedItem でセットするような感じになりそうだ。 ======================================= ところで… Dim node(3) As IXMLDOMNode '要素 であって Dim node(3) As MSXML.IXMLDOMElement じゃないのは何か理由があるのかなあ… #ま、IXMLDOMElementにあるsetAttribute使っても 結局変更する時にはremoveAttributeしないといけないみたいなんですけどね ========================= ##それにしてもNamespaceResolverみたいのがなくてxmlns:hoge属性で代用したり,XML宣言が書けないからって,処理命令で代用しなきゃいけないってのはかなり辛いね。

mouzou
質問者

お礼

さっそっくのご回答ありがとう御座います。 はじめに言い忘れたのですが、わたくしXMLのことに関しては全くのど素人です。 Set attr = xmlDoc.createAttribute("xmlns:xsi")の"xmlns:xsi"の部分を"xxxxxx"などに置き換えるとエラーがでずに作成されました。 removeAttributeを使用してのコーディングのやり方がわからないでよかったらその辺、ご教授願えませんでしょうか?

mouzou
質問者

補足

さっそっくのご回答ありがとう御座います。 はじめに言い忘れたのですが、わたくしXMLのことに関しては全くのど素人です。 Set attr = xmlDoc.createAttribute("xmlns:xsi")の"xmlns:xsi"の部分を"xxxxxx"などに置き換えるとエラーがでずに作成されました。 removeAttributeを使用してのコーディングのやり方がわからないでよかったらその辺、ご教授願えませんでしょうか?

関連するQ&A