• 締切済み

VB.NETでXMLのデータをやり取りする方法

VB.NET 2003を使用して、Windowsソフトを開発しています。 データの保存にXMLを使用したいのですが、読み出せるのですが書き込めません。 どのような方法でもいいので、既存XMLファイルにデータを追加する方法をご教授願えませんか? また、ご存知であればでよいのですが、VB.NETでWindowsソフト開発で、XMLに関する解説が詳しく掲載されているサイトはありませんか?

みんなの回答

回答No.5

こんな感じです。 Module Module1   Sub Main()     Dim l_strPath As String = "C:\Text.xml"     Dim l_dstデータセット As DataSet     Dim l_encエンコーディング As System.Text.Encoding = System.Text.Encoding.GetEncoding(932)     'データセットを書く     'http://okwave.jp/kotaeru.php3?q=1583980     l_dstデータセット = 作成_データセット()     'データセットを出力     Call XML_書(l_dstデータセット, l_strPath)     'データセットを初期化     l_dstデータセット = New DataSet()     'データセットを読込     Call XML_読(l_dstデータセット, l_strPath)   End Sub   Sub XML_書(ByVal p_dstデータ As DataSet, ByVal p_strファイル As String)     Dim l_str出力フォルダ As String = IO.Path.GetDirectoryName(p_strファイル)     '出力実行     Dim l_swXML As New IO.StreamWriter(p_strファイル)     p_dstデータ.WriteXml(l_swXML, XmlWriteMode.WriteSchema)     l_swXML.Close()     l_swXML = Nothing   End Sub   Sub XML_読(ByRef p_dstデータ As DataSet, ByVal p_strファイル As String)     '読込実行     Dim l_swXML As New IO.StreamReader(p_strファイル)     Dim l_xrdXML As New Xml.XmlTextReader(l_swXML)     p_dstデータ.ReadXml(l_xrdXML)     l_xrdXML.Close()     l_swXML.Close()     l_swXML = Nothing   End Sub   Function 作成_データセット() As DataSet     Dim l_dtbデータテーブル As New DataTable("新テーブル")     Dim l_drwデータロウ As DataRow     Dim i As Integer     Dim l_dstデータセット As New DataSet()     l_dtbデータテーブル.Columns.Add("文字型", System.Type.GetType("System.String"))     l_dtbデータテーブル.Columns.Add("整数型", System.Type.GetType("System.Int32"))     l_dtbデータテーブル.Columns.Add("長整数型", System.Type.GetType("System.Int64"))     For i = 1 To 26       l_drwデータロウ = l_dtbデータテーブル.NewRow       l_drwデータロウ.Item("文字型") = Chr(48 + i) & Chr(64 + i)       l_drwデータロウ.Item("整数型") = i * 1000       l_drwデータロウ.Item("長整数型") = i * 1000000       l_dtbデータテーブル.Rows.Add(l_drwデータロウ)     Next     l_dstデータセット.Tables.Add(l_dtbデータテーブル)     Return l_dstデータセット   End Function End Module

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

例えば、ファイルが使用中で同じ名前で書き込みできないということなら、最初にファイルをコピーして、そちらを使用するようにしたらどうでしょう。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

>クローズする方法 StreamReaderだったら Close ですが、ぼけた回答だったらすみません。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

>このファイルは別のプロセスが使用中です。 ファイルが、開かれたままになっているということですね。

you_ser
質問者

補足

ファイルが開きっぱなしってことはわかるのですが、クローズする方法がわからないんです。 あと、XMLでのデータの取り扱いがこれで本当によいのかどうかもわからない状態です。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

Imports System.Xml して XmlDocumentで Loadして 適当にいじって Saveで書き出せます そういうことではなくて、書き込めないという別の理由なら、 こういうXMLデータファイルをこういうやり方で読み込んだ そして、こういう処理をして、 こういうやり方でファイルに書き込もうとしたが こういう風に失敗するというように もう少し詳しく書いて下さい

you_ser
質問者

補足

説明不足で申し訳ありませんでした。 XMLデータをStreamReaderで読み出し、DataSetとして使用します。 DataSet(正確にはDataTable)に対してデータ追加を行い、データの加工が終わったDataSetをStreamWriterを利用して書き込む際に以下のエラーが出ます。 'System.IO.IOException' のハンドルされていない例外が mscorlib.dll で発生しました。 追加情報 : プロセスはファイル "XXXX.xml" にアクセスできません。このファイルは別のプロセスが使用中です。

関連するQ&A

  • VB2005でDBから取得したデータを指定されたXMLデータへ変換する方法について

    VB2005の初心者です。 Aシステムの開発(VB2005)で、Bシステムとの通信部分の開発をしています。 Bシステムとの通信はTCP/IP通信にて、XMLデータでやりとりをします。 XMLデータは、タグなど形式が決まっています。 単純に、適当なXMLデータを通信でやりとりすることはできたのですが、 AシステムでDB(SQLServer)から取得したデータを、形式に沿ったタグを使用したXMLデータに変換してから通信したいのですが、その変換方法が分りません。 DBのデータをXML形式に変換すると、フィールド名のタグでできると思うのですが、そうではなく、指定したタグを使用してXMLデータを作成するにはどうすれば良いのでしょうか。 タグを指定、もしくは変換する方法などはあるのでしょうか。 何かヒントでも良いので、たくさんの方の知恵をお借りできれば幸いです。 よろしくお願い致します。

  • VB.NETとVC.NET(MFC)で互換のXMLパーサ

    WinXP Embbeded上で動作する一種の制御ソフトを 開発しないといけないのですが、 本体制御ソフトをVCで、ユーザIF(GUI)をVBで作ることにしています。 パラメータ等の設定をGUIと本体ソフトで遣り取りしないといけません。 VBソフトとVCソフトのそれぞれに互換のシリアライザ の様なものを実装して、共通のファイルを互いに 読み書きすることを考えています。 GUIは極力標準的かつ平凡なソフトにしたいので .NET Framework以外のライブラリを使うのは避け、XmlSerializerあたりを使うと良いのかと思いますが、VC(MFC)はXmlSerializerが吐き出したXMLファイルを 読めるパーサは何を選べば良いのでしょうか? XMLに拘っている訳ではないのですが、言語に 依存しない最も普遍的な方法ではないかと思っています。 XML以外で良い方法があればそれも良しです。

    • ベストアンサー
    • XML
  • VB6でXMLを処理するには

    .NETでXMLを処理する文献などは多数あるようですが、VB6では探してもほとんどないようです。 VB6でXMLを処理するにあたって、最適な文献やサイトはないでしょうか。 具体的には、XMLのファイルを読み込んで、その中に書かれているデータを取り出したいと考えています。書き出しは今のところ不要です。

  • xmlという拡張子が勝手に追加されて困っています

    困っています。 あるオンラインソフトで、取得したデータの読み込みができませんでした。 サポートセンターに相談したところ、保存したデータのtmpという拡張子に勝手にxmlという拡張子が追加されていたことで読み込みができなかったということが分かりました。xmlという拡張子を手動で削除して、tmpだけにするとデータの読み込みができるのですが、サポートセンターでは、なんで勝手にxmlという拡張子が追加されるのかとか、追加されなくする方法については教えてもらえませんでした。手動で削除するには、いちいちオンラインソフトを終了しないとできなくて困っています。 私は、全くのパソコンオンチです。拡張子という単語も今回はじめて知りました。tmpがどうも一時保存ファイルらしいことxmlがどーもテキスト?ファイルらしいことは分かりました。 関係あるか分かりませんが、windowXP オフィスは2003です。 よろしくお願いします。

  • C#のクラスをVB.netで使用したい!

    お世話になっております。 C#で、wave音声ファイルを録音する機能を持ったクラスファイルがあります。 これをvb.netで使用したいのですが、使用方法がよくわかりません。 vb.netで「既存項目の追加」で、C#のcsファイルは追加できたのですが、 これをvb.netのモジュールで宣言して使用する方法を教えていただきたいのです。 検索してもうまくヒットせず、こちらで教えていただきたく ご質問させていただきました。 【環境】 ・windows mobile 5.0 pocketPC用プログラム(.net compact frame3.5) よろしくお願いいたします。

  • XMLからデータセットへ

    こんにちは 初めての質問です。 今XML形の文字列があります。 string strXML = @" <dataset1> <table1> <column1>a</column1> <column1>b</column1> <column1>c</column1> <column1>d</column1> <column1>e</column1> <column1>f</column1> </table1> </dataset1>"; この文字列をXMLファイルとして保存します。 XmlDocument xml = new XmlDocument(); xml.LoadXml(strXML); xml.Save(@"C:\test.xml"); 保存したXMLファイルをデータセットで読み込みます。 DataSet ds = new DataSet(); ds.ReadXml(@"C:\test.xml"); 以上の流れでデータセットの作成はできますが、 一回XMLファイルを保存しないといけません。 何とか保存しないで、文字列から直接データセットを生成する方法はありますか? よろしくお願いします。

    • ベストアンサー
    • XML
  • XMLからデータを取得

    いつもお世話になっております。 XMLファイルに含まれたデータの中から、特定のデータを検索するプログラムを作りたいと思っております。 <AAA Name="テスト">    <BBB x="2" y="2"></BBB>    <CCC Num="0001"></CCC>    <CCC Num="0002"></CCC> </AAA> XMLデータの形式は↑みたいな感じで、これが100以上あり、CCCタグは0~5個までです。 フォームにテキストボックスを配置し、そこに検索したい語句を入れ、 AAAタグのNameの中身と合致したら、BBB、CCCの属性をすべて取得して表示するということをしたいのですが、 どうにも上手くいきません。 VB2008を使用しております。 方法をご存知の方、ご教授ください……orz

  • VB.netでxml-rpcの使用は可能??

    お世話になっております。 VB2005にてアプリケーションを作成している一般人です。 「xml-rpc」なる便利なものがあるそうですが、VB.netでの使用は可能なのでしょうか? C#などでは使用できると聞いています。 ムーバブルタイプなどの記事投稿をするために作成中のアプリケーションに是非とも使ってみたいのですが・・・。 もし使用できるなら、記事投稿の方法なども教えていただけると嬉しいです。 宜しくお願いいたします!!

  • xmlの編集-Excel

    職場で専用ソフトを用いて顧客データを入力をしていますが、 入力データに大量の変更があったときなど、顧客毎に一つ一つ修正しなければならず、入力が面倒です。 専用ソフトで入力したデータは複数のxmlファイルで管理されています。 そのxmlファイルを直接Excelで編集して専用ソフトにも反映させたいのですが、方法が分かりません。 Excelは2003です。 データ-xml-インポート でxmlを開き、データを一部修正後、 ファイル-名前をつけて保存 でxml形式を選択して保存 (ファイル名は修正前と同様) をしてみましたが、 編集前のファイルサイズより編集後のファイルサイズのがかなり大きくなり、 専用ソフトで開いてもエラーとなってしまいます。 xmlの編集の仕方が間違っているのでしょうか?

  • 既存のXMLを別のXMLの要素として追加する方法

    JavaでDOMを使用して、既に作成してあるXMLを別のXMLの要素として追加しようと思っているのですが、なかなか上手くいかないので投稿いたしました。 具体的に以下のような既存のXMLファイルがあると仮定して、 <?xml version="1.0" encoding="UTF-8"?> <a> <b>0</b> <c>1</c> <d>2</d> </a> 上記のXMLの親ノード(逆に言えば、このXMLの子ノードとして上記XMLを追加)にあたるXMLは以下のようになっています。 <?xml version="1.0" encoding="UTF-8"?> <A> </A> そして<A>と</A>の間に既存のXMLを追加して、 <?xml version="1.0" encoding="UTF-8"?> <A> <a> <b>0</b> <c>1</c> <d>2</d> </a> </A> のようにしたいと考えています。 よろしくお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう