
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB6でXMLを作成しているのです...
-
XMLの要素の内容の中に要素
-
CPUの考え方を教えてください ...
-
SNMP リンクダウンとノードダ...
-
バッチファイルでテキストファ...
-
Windowsで見かけるxmlファイル...
-
ノードとは
-
このエラー、何とかなりません...
-
xmlファイルが上手にHTMLに変換...
-
タグの有無の判定
-
u_shortなどの省略した宣言につ...
-
XSLTにてタグ名を取得する方法
-
XPathでできるか確認
-
昔Winnyってありましたけど、あ...
-
ルート要素ノードが2個ある場合?
-
東芝のDynabookなのですがアン...
-
ブレークポイントで止らない
-
同じタグ名の項目取得
-
ノード数とは?
-
XMLとXSLTでリンクを張る方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
XPathで途中に名前空間が設定さ...
-
XMLファイル内のデータ(値)を変...
-
VBAでXMLを出力するプログラム...
-
VBAでXML文書のある特定タグ以...
-
VB6でXMLを作成しているのです...
-
エクセルVBA ウェブ上のボタ...
-
C#でXMLファイルの情報にアクセ...
-
XMLをXSLTで変換するとき、XML...
-
XMLの要素の内容の中に要素
-
XML文のid属性とclass属性について
-
C# GetElementsByTagNameで取得...
-
CPUの考え方を教えてください ...
-
東芝のDynabookなのですがアン...
-
ルート要素ノードが2個ある場合?
-
SNMP リンクダウンとノードダ...
-
XMLで要素が記述された順番に意...
-
Excel-VBAでXMLの複数ノードの...
-
複数のマックPCによる数値計算...
-
XML、XSLTの適応エラー(IEから...
-
バッチファイルでテキストファ...
おすすめ情報