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")
A 回答 (1件)
- 最新から表示
- 回答順に表示
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宣言が書けないからって,処理命令で代用しなきゃいけないってのはかなり辛いね。
この回答への補足
さっそっくのご回答ありがとう御座います。
はじめに言い忘れたのですが、わたくしXMLのことに関しては全くのど素人です。
Set attr = xmlDoc.createAttribute("xmlns:xsi")の"xmlns:xsi"の部分を"xxxxxx"などに置き換えるとエラーがでずに作成されました。
removeAttributeを使用してのコーディングのやり方がわからないでよかったらその辺、ご教授願えませんでしょうか?
さっそっくのご回答ありがとう御座います。
はじめに言い忘れたのですが、わたくしXMLのことに関しては全くのど素人です。
Set attr = xmlDoc.createAttribute("xmlns:xsi")の"xmlns:xsi"の部分を"xxxxxx"などに置き換えるとエラーがでずに作成されました。
removeAttributeを使用してのコーディングのやり方がわからないでよかったらその辺、ご教授願えませんでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaの構文の修正相談(xmlファイルを順に開いてコピペ作業) 1 2023/04/22 01:18
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) エクセルVBA(実行時エラー438)の対処法を教えてもらえないでしょうか 3 2023/04/22 13:43
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Visual Basic(VBA) 実行時エラー´5854´ 文字列型パラメーターが長すぎます。 3 2023/06/08 21:17
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
このQ&Aを見た人はこんなQ&Aも見ています
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでXMLを出力するプログラム...
-
XPathで途中に名前空間が設定さ...
-
XMLDocumentでスキーマを無視し...
-
VBAでXML文書のある特定タグ以...
-
CPUの考え方を教えてください ...
-
東芝のDynabookなのですがアン...
-
VB6.0でDOMを使用して...
-
Excel-VBAでXMLの複数ノードの...
-
バッチファイルでテキストファ...
-
XMLで要素が記述された順番に意...
-
VB6でXMLを処理するには
-
VBSでxmlの値を書き換えたい
-
UTF-8でエンコーディングとはど...
-
SNMP リンクダウンとノードダ...
-
xmlファイルが上手にHTMLに変換...
-
あるノードリストに、特定の名...
-
MSXMLを使ってノードを削除した...
-
MFCでのタブコントロールに...
-
xmlのテキストにリンクを張りた...
-
GoogleマップでKMLが読み込めない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
XPathで途中に名前空間が設定さ...
-
VBAでXMLを出力するプログラム...
-
XMLファイル内のデータ(値)を変...
-
VB6でXMLを作成しているのです...
-
VBAでXML文書のある特定タグ以...
-
XMLDocumentでスキーマを無視し...
-
WebBrowser1.Document.Body.Inn...
-
XMLの要素の内容の中に要素
-
エクセルVBA ウェブ上のボタ...
-
XmlをDetaSetに読み込んだ場合...
-
LoadCML
-
C#でXMLファイルの情報にアクセ...
-
CPUの考え方を教えてください ...
-
東芝のDynabookなのですがアン...
-
XMLで要素が記述された順番に意...
-
昔Winnyってありましたけど、あ...
-
UTF-8でエンコーディングとはど...
-
バッチファイルでテキストファ...
-
ルート要素ノードが2個ある場合?
-
Excel-VBAでXMLの複数ノードの...
おすすめ情報