VB6.0でDOMを使用してXMLを編集する方法

このQ&Aのポイント
  • VB6.0でDOMを使用してXMLを読み込み、著者のidの内容を変更する方法を教えてください。
  • 磯野カツオという著者のidを「1234567」から「9999999」に変更したいです。
  • VB6.0のコーディング例を教えてください。
回答を見る
  • ベストアンサー

VB6.0でDOMを使用してXMLを編集したい

VB6.0でDOMを使用して下記XMLを読込んで<著者 id="1234567">のidの内容を「1234567」→「9999999」に変更したいのですがどのようにしたらよいのかわからなくて困っています。 よろしくお願いします。 【SAMPLE.XML】 <?xml version='1.0' encoding="UTF-8" ?> <書籍情報> <著者 ="1234567"> <名前>磯野カツオ</名前> <性別>男性</性別> </著者> </書籍情報> 【VB6.0】 Dim xmlDocument As New MSXML2.DOMDocument If Not xmlDocument.Load("SAMPLE.XML") Then   MsgBox "XML Read Error!!!"   Exit Function End If '************************************************ 'どのようにコーディングしたらいいのでしょうか? '************************************************ Call xmlDocument.Save("SAMPLE01.XML")

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

getElementsByTagNameで 著者ノードを探して このノードの attributes.getNamedItem("ID") で属性を取り出します Textプロパティを変更すればいいようですよ Dim objNode as IXMLDOMNodeList Dim objAttr as IXMLDOMNode Set objNode = xmlDocument.GetElementByTagName("著者") set objAttr = objNode(0).attributes.getNamedItem("ID") objAttr.Text = "9999999" xmlDocument.save "sample01.xml" といった具合でしょう ... # 質問中の『著者』タグの = の前の IDが抜けているのは間違いですよね

ponzulove
質問者

お礼

回答ありがとうございました。 教えていただいた方法でやってみたところ求めていた通りになりました。 大変助かりました。

関連するQ&A

  • VB6.0でDOMを使用してノードを削除したい

    VB6.0でDOMを使用して下記のSAMPLE.xmlより編集者以下のノードを削除してSAMPLE01.xmlとして保存したいのですがやり方がわかりません。 よろしくお願いします。 【SAMPLE.xml】 <?xml version='1.0' encoding="UTF-8" ?> <書籍情報>  <著者 id="00001">   <名前>磯野カツオ</名前>   <性別>男性</性別>  </著者>  <編集者 id="10001">   <名前>磯野波平</名前>   <性別>男性</性別>  </著者> </書籍情報> 【VB6.0】 Dim xmlDocument As New MSXML2.DOMDocument If Not xmlDocument.Load("SAMPLE.xml") Then   MsgBox "XML Read Error!!!"   Exit Function End If '********************************************************* ' ※ここにどのようにコーディングしたらいいのでしょうか? '********************************************************* Call xmlDocument.Save("SAMPLE01.xml")

  • VBAでMSXML2.DOMDocument を使用したい

    お世話になります。 下記ソースのようにVBAで「MSXML2.DOMDocument」を使用したいと 思うのですが実行すると 「Dim D As MSXML2.DOMDocument」の箇所で 「コンパイルエラー:ユーザ定義型は定義されていません」 とメッセージがでます。 どのようにすれば「MSXML2.DOMDocument」が使えるのでしょうか? 私は、完全な初心者でありました。何も設定せずに、VBAに下記の 文を入力しました。 解決策と、もし、VBAでDOMを使用する初心者サイトがありましたら 教えて頂ければとおもいます。 よろしくお願いします。 VBAソース-------------------------------------------- Dim D As MSXML2.DOMDocument Set D = New MSXML2.DOMDocument D.async = False If D.Load("C:\SAMPLE.XML") Then MsgBox "読み込み成功" Else MsgBox "読み込み失敗" End If

  • DOMでXML操作

    PHP5でDOMを操作しXMLのタグ情報などを得たいのですがプログラムが動かないので質問させていただきました。 //test.php <?php $doc = new DomDocument; $doc->validateOnParse = true; $doc->Load('book.xml'); echo "ID が books の要素は".$doc->getElementById('books')->tagName . " です。\n"; ?> //book.xml <?xml version="1.0" encoding="shift_JIS"?> <A>   <B id="books">test</B> </A> サンプルプログラムを拾ってきてbooksのtestを取得したいのですがなかなか動きません。実行するとエラー文も何もなく「ID が books の要素は です。 」とだけ表示されます。 環境そのものが整っていないのかも解らないため詳しい方ご教授よろしくお願いします。 現在の環境です。 PHP5 Apache2.0

    • ベストアンサー
    • PHP
  • VBAのXML処理でメモリが足りない?

    Excel2003のVBAでMSXML2.DomDocumentを使ってXMLの処理をしています。http経由でXMLを取得し、パースして、Sheetに書き込んでいます。 XMLの行数が少ないうちは問題ないのですが、行数が1600件を超えたあたりで、LoadXML()メソッドで落ちます。 XMLを分割して、500行ずつや100行ずつLoadXMLさせても、合計処理数が1600行あたりで、必ずLoadXML()に失敗します。 メモリ不足かと思って、ループするごごとにSet Dom = Nothingのようにしてオブジェクトをクリアしていますが、効果がありません。 処理させたいXMLは最大で8000行になります。 なんとか解決策はないでしょうか? 以下、ソースの一部です。 Dim Dom As New MSXML2.DOMDocument Function get_xml_dom(query) Dim MSX As Object Set Dom = New MSXML2.DOMDocument Dim Url As String host_address = "hostname" host_path = "/keyword_report/get_keyword_data" Url = "http://" & host_address & host_path & query Set MSX = CreateObject("MSXML2.XMLHTTP") MSX.Open "GET", Url, False MSX.Send If Dom.LoadXML(MSX.responseText) Then '<- 1600件ぐらい処理させるとここで落ちる Debug.Print "Load XML is True" get_xml_dom = True Else get_xml_dom = False Debug.Print "Load XML is False" End If Set MSX = Nothing End Function このあと、DomからXPATHで要素を取り出して、シートに埋め込んでいます。

  • VB2005でXMLのテキストデータをXMLデータにするには?

    VB2005の初心者です。 タグ付きのXMLのテキストデータを読み込んで、項目ごとにDBに登録したいのですが、やり方が分りません。 テキストデータをXMLデータ、もしくはノード、もしくはデータセット型に変換しなければならないと思うのですが、そのやり方を教えていただきたいです。 ちなみに、XMLデータをテキストデータにするのは下記のとおりでできました。この strText を逆にXMLデータに変換したいです。 Dim xmlDoc As MSXML2.DOMDocument = New MSXML2.DOMDocument Dim strText As String xmlDoc.PreserveWhitespace = True xmlDoc.Load("C:XMLData.xml") strText = xmlDoc.xml 何かヒントでも良いので、たくさんの方の知恵をお借りしたいです。

  • XMLデータをパーサーをかけてテキストデータにするには?

    VB2005の初心者です。 XMLファイルを読み込んで、パーサーをかけてテキストデータにしたいのですが、やり方が分りません。 (パーサーを使わずにテキストデータにすることはできます。) ご存知の方は、ヒントでも良いので教えていただきたいです。 仕事で行き詰っているため、たくさんの方の情報をいただけると幸いです。 下記は、パーサーを使わないやり方です。 Dim xmlDoc As XmlDocument = New XmlDocument Dim strText As String xmlDoc.PreserveWhitespace = True xmlDoc.Load("C:\XMLData.xml") strText = xmldoc.OuterXml パーサーを使う場合、下記のようになると思うのですが、 どのようにテキストデータにすれば良いのか分りません。 (OuterXmlが使えません。) Dim xmlDoc As MSXML2.DOMDocument = New MSXML2.DOMDocument Dim strText As String xmlDoc.PreserveWhitespace = True xmlDoc.Load("C:\XMLData.xml") よろしくお願い致します。

  • XMLへDOMでタグの追加

    次のようなXMLにDOMで、タグを追加しようとしているのですが、 追加される場所が思った所に追加されません。 正常XMLにようにしたいのですが、どうすれば良いでしょうか? --元XML----------------- <root> <item>a</item> <item>b</item> </root> --結果XML----------------- <root> <item>a</item> <item>b</item> <info>xxxx</info> </root> --正常XML----------------- <root> <info>xxxx</info> <item>a</item> <item>b</item> </root> -- プログラム ---------------- MSXML::IXMLDOMDocumentPtr xmlDoc = NULL; MSXML::IXMLDOMNodeListPtr pNodes; MSXML::IXMLDOMNodePtr pNode; MSXML::IXMLDOMElementPtr pElem; xmlDoc.CreateInstance ("Msxml2.DOMDocument"); xmlDoc->load( ファイル名 ); pNodes = xmlDoc->selectNodes(L"/root"); pNode = pNodes->Getitem(0); pElem = xmlDoc->createElement(L"info"); pNode->appendChild( pElem ); 環境:WinXP+IE7+VC6

    • ベストアンサー
    • XML
  • PHPのDOMでXML読み込もうとしているのですが...

    PHPのDOMでXML読み込もうとしているのですが、getElementsByTagNameがうまくいきません。 PHPのバージョンは5です。 コードは以下のとうりです。 $document = new DomDocument('1.0'); $document -> Load('test.xml'); $items = $document -> getElementsByTagName('item'); if(!is_null( $items)){ echo count($items); echo "ok"; } XMLにitemノードは3つあるので、 echo count($items); で 3が返ってくると思うのですが、1しか返ってきません。 $items -> value でも何も表示されません。 でも cho "ok"; の ok は表示されます。 すみません。どなたかどこが間違っているのか教えていただけると助かります。

    • ベストアンサー
    • PHP
  • IEでDOMが作成出来ない

    少し昔に作成した未完成のプログラムを発掘したので、修正しています。 そこでIEでAjaxを使用しXMLを受信しDOMにして、その後反映したいのですが、 受信したXMLをDOMにする所で上手く行きません。 // ソース // function parserXML(xmlText) {  if (window.ActiveXObject) {   domDoc = new ActiveXObject('Msxml2.DOMDocument.6.0');   domDoc.async = false;   domDoc.loadXML(xmlText);   return domDoc;  } else if(window.DOMParser) {   return (new DOMParser).parseFromString(xmlText, "text/xml");  } else {   return null;  } } この関数のreturnを計ると、どうしてもIEの場合はデータが出て来ません。 ちなみに渡しているXMLのテキストも確認しましたが問題が見あたりませんでした。 どこが問題なのでしょうか?

  • DOMで\\localhost\~がloadできません

    DOMについて質問させてください。 DOMで\\localhost\~\test.xmlをloadすると、「指定されたパスが見つかりません。」が表示されloadできません。ちなみに、ループバックアドレスの\\127.0.0.1だとうまくいきます。なぜか理由が分からないため質問させていただきました。\\localhostでloadするには何かwindowsの設定がいるのでしょうか? ・再現手順は以下の通りです。 (1)DOMでCドライブ配下にサブフォルダを作成し、そのサブフォルダ内に共有フォルダを作成します。 (2)作成した共有フォルダ内にxmlファイルを格納します。 (3)DOMで共有フォルダ内のxmlファイルをロードするとエラーになります。 以下、サンプルコードです。(MSXMLのバージョンはどのバージョンでも現象は同じ) '================================================== Set objDOM = CreateObject("MSXML2.DOMDocument.6.0") objDOM.async = false rtResult = objDOM.load("\\localhost\~\test.xml") msgbox "load:" & rtResult & " エラー番号:" & objDOM.parseError.errorCode & " MSG:" & objDOM.parseError.reason Set objDOM = Nothing '==================================================

    • 締切済み
    • XML