• 締切済み

vb6 XMLファイル出力について<S></S>

vb6にてXMLファイル出力のプログラムを作成しています。 XMLファイル内容 <?xml version="1.0" encoding="UTF-8"?> <root> <key>AA</key> <string>aa</string> <key>BB</key> <string/> </root> 上記の<string/>の部分を<string></string>のように出力したいのですが、 どうしても上手くいきません。 下記にソースを記載します。 何か少しでもお分かりになる情報がありましたらご教授願いします。 よろしくお願いします。 Dim xmlDoc As MSXML2.DOMDocument 'XMLドキュメント Dim xmlPI As IXMLDOMProcessingInstruction 'XML宣言 Dim node(50) As IXMLDOMNode '要素 Dim attr As MSXML2.IXMLDOMAttribute '属性 'XMLドキュメントを作成 Set xmlDoc = New MSXML2.DOMDocument 'XML宣言を追加 Set xmlPI = xmlDoc.appendChild(xmlDoc.createProcessingInstruction("xml", "version=""1.0"" encoding=""UTF-8""")) '<root>要素を追加 Set node(1) = xmlDoc.appendChild(xmlDoc.createNode(NODE_ELEMENT, "root", "")) '<key>要素を追加 Set node(2) = node(1).appendChild(xmlDoc.createNode(NODE_ELEMENT, "key", "")) node(2).Text = "AA" '<string>要素を追加 Set node(3) = node(1).appendChild(xmlDoc.createNode(NODE_ELEMENT, "string", "")) node(3).Text = "aa" '<key>要素を追加 Set node(4) = node(1).appendChild(xmlDoc.createNode(NODE_ELEMENT, "key", "")) node(4).Text = "BB" '<string>要素を追加 Set node(5) = node(1).appendChild(xmlDoc.createNode(NODE_ELEMENT, "string", "")) node(5).Text = "" 'XMLドキュメントの出力 Dim strXMLFile As String strXMLFile = Format(Date, "yyyymmdd") & Format(Time, "hhmmss") xmlDoc.save ("C:TEST\TEST.xml") '終了処理 If Not xmlDoc Is Nothing Then Set xmlDoc = Nothing If Not xmlPI Is Nothing Then Set xmlPI = Nothing

みんなの回答

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.4

VBAでMSXMLを使用していますが、質問者様とは逆のニーズで悩まされました。当方が到達した結論は、 「MSXMLは、<S></S>を出力するか、<S/>を出力するかは気紛れなので、XML生成後にテキスト処理して、統一するしか無い」 というものです。 仕方が無いので、正規表現を用いて<S></S>を<S/>に整形しています。 ところで、空要素に対して、 <S attribute1="a" attribute2="b"></S attribute1="a" attribute2="b"> 等という、IEがエラーと見なして?表示しないようなXMLまで吐き出してくれる事があります。この対策として、空要素の代わりに、絶対他に使わないであろう文字・文字列を入れておいて、最後にテキスト処理で空文字と置換(つまり削除)する方法を取っています。これにより、<S attribute1="a" attribute2="b"></S>を出力する事ができます。 この手法を応用すると、当然<S/>が出来る事は無く、<S></S>になります。ご参考まで。

noname#232800
noname#232800
回答No.3

もしくは node(5).Text = "kkkk" と出力してみる。

回答No.2

>上記の<string/>の部分を<string></string>のように出力したい すまん、逆だったorz <string></string>となってしまうのを<string/>と出力したいのだと思っていた。MSXMLv3.0で出力した手元のファイルをメモ帳で開くと<string></string>となっているけどなぁ?

回答No.1

関連するQ&A

  • VBでXMLファイルを作ると xmlns= が・・・

    VB6でXMLを作成しています。 Dim xmlDoc As New MSXML2.DOMDocument40 'XMLドキュメント Dim xmlPI As IXMLDOMProcessingInstruction 'XML宣言 Dim node(7) As IXMLDOMNode '要素 Set xmlPI = xmlDoc.appendChild(xmlDoc.createProcessingInstruction("xml", "version= ""1.0"" encoding= ""Shift_JIS"" standalone= ""no""")) Set node(1) = xmlDoc.appendChild(xmlDoc.createNode(NODE_ELEMENT, "kml", "")) Set node(2) = node(1).appendChild(xmlDoc.createNode(NODE_ELEMENT, "kmlHeader", "")) Set node(3) = node(2).appendChild(xmlDoc.createNode(NODE_ELEMENT, "kml_DTD", " kml_Version= 2.8"" kml_FileName=""../DTD/HYB01.dtd")) 以下省略 すると <kml_DTD xmlns="kml_Version= 2.8" kml_FileName="../DTD/HYB01.dtd" /> "xmlns=" はどうすれば消えますか?お願いします。

  • VBでXMLファイルを作成していますが、エラーになります

    すみません、教えてください。 VB6でXMLファイルを作成しています。コメントを入れようとすると"!--"の文字でこけます。どうしたらいいのでしょうか?コーディングは以下のようにしてます。 Dim xmlDoc As New MSXML2.DOMDocument40 'XMLドキュメント Dim xmlPI As IXMLDOMProcessingInstruction 'XML宣言 Dim node(3) As IXMLDOMNode '要素 garFNRpt = sFPass + "Sousinfile\DATA\" + sFilemei + ".xml" 'XML宣言を追加します。 Set xmlPI = xmlDoc.appendChild(xmlDoc.createProcessingInstruction("xml", "version=""1.0"" encoding=""UTF-8""")) Set node(1) = xmlDoc.appendChild(xmlDoc.createNode(NODE_ELEMENT, """!--""kml基本情報", "")) よろしくお願いします

  • VBAでXMLを出力するプログラムを作成する際の名前空間接頭辞の付与の仕方について

    今、Excel付属のVBAを使用して、XMLを作成するプログラムを作成しております。 その際、名前空間(及び接頭辞)を付与したいのですが、方法が分からず苦慮しております。 VB.NET等での方法はわかったのですが、職場の開発環境上、VBAでなんとか対応したいところです。 もし何かご存知の方、いらっしゃいましたら、どうか教えていただきたく、よろしくお願いいたします。 ===作成したいXML=== <?xml version="1.0" encoding="Shift_JIS" ?> - <Root> - <YOUSO xmlns:BBB="http://aaa.aa.aaa"> <YOSO2>AAAAAAA</YOSO2> </YOUSO> </Root> ===現在このようなXMLになってしまっております。=== <?xml version="1.0" encoding="Shift_JIS" ?> - <Root> - <YOUSO xmlns="http://aaa.aa.aaa"> <YOSO2 xmlns="">AAAAAAA</YOSO2> </YOUSO> </Root> ===作成したコード=== Sub TEST() Dim xmlDoc As MSXML2.DOMDocument Dim xmlPI As IXMLDOMProcessingInstruction Dim node(3) As IXMLDOMNode Set xmlDoc = New MSXML2.DOMDocument 'XML宣言 Set xmlPI = xmlDoc.appendChild(xmlDoc.createProcessingInstruction("xml", "version=""1.0"" encoding=""Shift_JIS""")) '<Root>要素 Set node(1) = xmlDoc.appendChild(xmlDoc.createNode(NODE_ELEMENT, "Root", "")) '<YOSO1>要素 Set node(2) = node(1).appendChild(xmlDoc.createNode(NODE_ELEMENT, "YOUSO", "http://aaa.aa.aaa")) '<YOUSO2>要素 Set node(3) = node(2).appendChild(xmlDoc.createNode(NODE_ELEMENT, "YOUSO2", "")) node(3).Text = "AAAAAAA" 'XMLドキュメントの出力 xmlDoc.Save ("customer.xml") End Sub ============================ よろしくお願いいたします。

  • 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")

  • XMLの要素の内容の中に要素

    VisualBasic6.0にて、XMLを作成するプログラムを作っています。 XMLの作成、編集はMSXMLを使用しており、編集保存はできたのですが、下記のような要素の出力の仕方がわかりません。 <Node1>  あいうえお  <Node1-1>abcde</Node1-1>  かきくけこ </Node1> このように要素の文字列の途中に子要素を作成したいです。 「Node1」要素に、子要素「Node1-1」を追加するサンプルです。 Cドライブ直下に以下の内容のXMLファイル「test.xml」を作成 <?xml version="1.0" encoding="shift_jis"?> <Node1> </Node1> VB6にて、参照設定に「Microsoft XML V6.0」を追加し以下のコードを作成。 Private Sub Command1_Click() Dim xDoc As MSXML2.DOMDocument Set xDoc = New MSXML2.DOMDocument Dim node As IXMLDOMNodeList Dim Addnode As IXMLDOMNode Dim obj As IXMLDOMNode If xDoc.Load("C:\test.xml") Then Set node = xDoc.documentElement.selectNodes("/Node1") For Each obj In node Set Addnode = obj.appendChild(xDoc.createNode(NODE_ELEMENT, "Node1-1", "")) Addnode.Text = "abcde" Next xDoc.save ("C:\test.xml") End If Set xDoc = Nothing End Sub

  • XML DOMについて

    JavaScriptでDOMを使用して、xmlhttp.sendで指定のPHPファイルに送信しましたが、 PHP側で値を取得できません。 (PHP Ver.5.3.0) 以下、JavaScript var UserID="abc"; var Password="abc"; var xmlDoc = new ActiveXObject("Microsoft.XMLDom"); xmlDoc.appendChild(xmlDoc.createProcessingInstruction("xml","version=\"1.0\"")); var root = xmlDoc.createElement("xDoc"); xmlDoc.documentElement=root; var node_Item = xmlDoc.createElement("Command"); root.appendChild(node_Item); var node_UserID = xmlDoc.createElement("UserID"); node_UserID.appendChild(xmlDoc.createTextNode(UserID)), node_Item.appendChild(node_UserID); var node_Password = xmlDoc.createElement("Password"); node_Password.appendChild(xmlDoc.createTextNode(MDString(Password))), node_Item.appendChild(node_Password); var node_Sufix = xmlDoc.createElement("Sufix"); node_Sufix.appendChild(xmlDoc.createTextNode(Sufix)), node_Item.appendChild(node_Sufix); var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); xmlhttp.open("post",topURL("main/Log.php"),false); xmlhttp.send(xmlDoc); 以下、Log.php <?php session_start(); $DEBUG_MODE=false; $xmlLogQ=$_SERVER['DOCUMENT_ROOT']."/test/temp/Request.xml"; $xml = new DOMDocument(); $xml->async=false; if (!$DEBUG_MODE) { if ($XML_LOG) { $xml->save($xmlLogQ); } } else { if ($XML_LOG) { $xml->load($xmlLogQ); } } $doc=$xml->documentElement; if ($xml->parseError.errorCode==0) { $xml = $node=$doc->selectSingleNode("Command/UserID"); if (!($node==null)) { $UserID=$node->text; $node=null; } $node=$doc->selectSingleNode("Command/Sufix"); if (!($node==null)) { $Sufix=$node->text; $node=null; } $node=$doc->selectSingleNode("Command/Password"); if (!($node==null)) { $Password=$node->text; $node=null; } } ?> 保存したXML上、<?xml version="1.0"?>以降書き込みできてません。 どの部分がおかしいか不明の為、申し訳ないですがご教授お願いします。

    • ベストアンサー
    • PHP
  • 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 何かヒントでも良いので、たくさんの方の知恵をお借りしたいです。

  • VBSでXMLを操作したい

    現在Webアプリケーションの簡単なものを作成しています。 データベースはXMLで出来上がっているのでそれを使いたいのですが、入力フォームに入れてもらったデータをXMLに変換してXMLデータベースに追加、保存しようと思います。 一応フォームに入力したものをXMLデータとして出力までは考えられたのですが、既存のXMLを読み出す方法と追加する方法、保存する方法がよくわかりません。 よろしくお願いいたします。 <html> <head> <title>入力フォーム</title> <script type="text/vbscript"> <!-- Option Explicit dim xmldoc Sub window_onload() set xmldoc=createObject("MSXML2.DOMDocument") xmldoc.async=False xmldoc.loadXML("<?xml version='1.0'?><全体/>") End Sub Sub makeXml() dim myInfoElement,myDataElement,myDataText dim ret1,ret2,ret3,ret4 set ret1=xmldoc.createTextNode(vbCRLf) xmldoc.documentElement.appendChild(ret1) set myInfoElement=xmldoc.createElement("名簿") set ret2=xmldoc.createTextNode(vbCRLf) myInfoElement.appendChild(ret2) set myDataElement=xmldoc.createElement("名前") set myDataText=xmldoc.createTextNode(myForm.myName.value) myDataElement.SetAttribute "年",myForm.myAge.Value myDataElement.appendChild(myDataText) myInfoElement.appendChild(myDataElement) set ret3=xmldoc.createTextNode(vbCRLf) myInfoElement.appendChild(ret3) xmldoc.documentElement.appendChild(myInfoElement) set ret4=xmldoc.createTextNode(vbCRLf) xmldoc.documentElement.appendChild(ret4) myForm.xmlSource.value=xmldoc.xml End Sub --> </script> </head> <body> <form name="myForm"> 名前:<input type="text" size="30" name="myName"><br> 年:<input type="text" size="10" name="myAge"> <button onClick="makeXml()">XMLの作成</button><br> <textarea name="xmlSource" cols="60" rows="15"></textarea> </form> </body> </html>

  • Load出来ないXMLファイル

    いつもお世話になっております。 標題の件なのですが、VB.NETでXMLファイルから設定情報(Oracleのユーザー名やパスワード等)を取得するプログラムを作成しております。 以下がそのソースコードになります。 ※VB.NET初心者なので、ネットにあったサンプルコードを参考にしました。 --------------------------------------------------   Public Function Setting_init() As Boolean     Dim xmlDoc As New DOMDocument30     Dim Node As IXMLDOMNode     Dim myErr     Dim FileName As String     FileName = "ini.xml"     Const PATH_DTS = "//Settings/Database/DataSource"     Const PATH_UID = "//Settings/Database/UserId"     Const PATH_PSW = "//Settings/Database/Password"     Const PATH_FRM = "//Settings/Path/Form"     Const PATH_OUT = "//Settings/Path/Output"     xmlDoc.async = False     xmlDoc.resolveExternals = False     xmlDoc.load(FileName)          If (xmlDoc.parseError.errorCode <> 0) Then       myErr = xmlDoc.parseError       Setting_init = False     Else       xmlDoc.setProperty("SelectionLanguage", "XPath")       Node = xmlDoc.selectSingleNode(PATH_DTS)       G_DataSorce = Node.text       Node = xmlDoc.selectSingleNode(PATH_UID)       G_UsrId = Node.text       Node = xmlDoc.selectSingleNode(PATH_PSW)       G_PassWord = Node.text       Node = xmlDoc.selectSingleNode(PATH_FRM)       G_FormPath = Node.text       Node = xmlDoc.selectSingleNode(PATH_OUT)       G_OutPath = Node.text       Setting_init = True     End If   End Function -------------------------------------------------- ちなみにXMLファイルの内容は -------------------------------------------------- <?xml version="1.0" encoding="utf-8"?> <Settings>  <Database>   <DataSource>Oracleサーバー名</DataSource>   <UserId>ユーザー名</UserId>   <Password>パスワード</Password>  </Database>  <Path>   <Form>フォームが存在するフォルダパス</Form>   <Output>ファイルを出力するフォルダパス</Output>  </Path> </Settings> -------------------------------------------------- となっております。 お客様の環境で実行したら、このプログラムのxmlDoc.load(FileName)の箇所でエラーが出ました。 読み取るXMLファイル内の漢字を除いたら実行できたみたいなのですが、 開発環境ではXMLファイルに漢字を含んでいても問題なくload出来るのです。 端末に依存するのでしょうか? それともこの文字があったらダメというのがあるのでしょうか? 何か情報があればご教示願います。 よろしくお願い致します。

  • XMLファイルのattribute値を取得するには?

    ASP内の処理でwebからXMLファイルをLoadし、 そこからattribute値を取得するにはどうすればよいのでしょうか? ちなみにXMLファイル取得は成功しています。 使用スクリプトはVBscriptです。 以下がロードしたXMLファイルの内容です。 <?xml version="1.0" encoding="Shift_JIS" ?> <xml> <AAA width="2.15" <--この2.15と height="4.60" <--この4.60を取得したい /> </xml> 以下が今、途中まで作っているソースです。 <% language = "VBscript" %> <% Dim XmlDoc, objXmlError, objXmlNode Set XmlDoc = CreateObject("MSXML2.DOMDocument") xmlDoc.async = false XmlDoc.setProperty "ServerHTTPRequest", true XmlDoc.load("http://localhost/test.xml") Set objXmlNode = XmlDoc.selectNodes("/root/AAA") ここから先がよくわからない %>

専門家に質問してみよう