Windows2000
ExcelVBA
Microsoft XML version2.0
環境でXMLデータ処理をしています。
<?xml version="1.0"?>
<!-- enerated -->
<CURS>
<LIST_OS>
<ORSTERY>
<X_W>確認データ</X_W>
<LIST_DATA>
<BREAK>
<USER_NAME>山田</USER_NAME>
<SEC_GR_NAME>部門</SEC_GR_NAME>
<LG_RES>
<G_PS>
<APPL_NAME>部門計算</APPL_NAME>
<RES_NAME>山田</RES_NAME>
</G_PS>
<G_PS>
<APPL_NAME>部門集計</APPL_NAME>
<RES_NAME>山口</RES_NAME>
</G_PS>
</LG_RES>
</BREAK>
</LIST_BREAK>
<AF_W></AF_W>
<BF_X></BF_X>
</ORSTERY>
</LIST_OS>
</CURS>
XMLDOMを用いて 指定されたタグ名のデータだけを取りたいのですが
タグ名:"X_W"を指定 → 確認データ , タグ名:"SEC_GR_NAME"を指定 → 部門
タグ名:"G_PS"を指定 → 部門計算,山田,部門集計,山口 を取りたいのですが
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
'完全なものではないがヒントというか指針。
'そもそもXML自体が整形式(開始タグと終了タグが正しい入れ子になっていて全て存在する)ではなかったので
'書き換えました。
'当然文字コードはBOM付きのUTF-8です
<?xml version="1.0"?>
<!-- enerated -->
<CURS>
<LIST_OS>
<ORSTERY>
<X_W>確認データ</X_W>
<LIST_DATA>
<BREAK>
<USER_NAME>山田</USER_NAME>
<SEC_GR_NAME>部門</SEC_GR_NAME>
<LG_RES>
<G_PS>
<APPL_NAME>部門計算</APPL_NAME>
<RES_NAME>山田</RES_NAME>
</G_PS>
<G_PS>
<APPL_NAME>部門集計</APPL_NAME>
<RES_NAME>山口</RES_NAME>
</G_PS>
</LG_RES>
</BREAK>
<AF_W></AF_W>
<BF_X></BF_X>
</LIST_DATA>
</ORSTERY>
</LIST_OS>
</CURS>
'================Module1====================
Option Explicit
'Optional Namespace As Stringな関数作ると面白そうかな
'当然ながら参照設定でMicrosoft XML version2.0を追加しておくこと。
Public Function LoadMyXML(FileName As String, TagName As String) As Boolean
Dim objXML As MSXML.DOMDocument
Dim strXML As String
Dim Elements As IXMLDOMNodeList
Dim Element As IXMLDOMElement
Set objXML = New MSXML.DOMDocument
If Not objXML.Load(FileName) Then
LoadMyXML = False
Exit Function
End If
Set Elements = objXML.GetElementsByTagName(TagName)
If Elements.Length = 0 Then
LoadMyXML = False
Exit Function
End If
For Each Element In Elements
MsgBox (Element.Text)
LoadMyXML = True
Next
End Function
'=====================UserForm1===================
Option Explicit
'TextBox1,TextBox2,CommandButton1がUserForm1上にある
'TextBox1がファイル名,TextBox2がタグ名なので,色々入力して試してみよう。
'実際にTextBox2に"G_PS"を入力した時には
'「部門計算 山田」
'「部門集計 山口」
'という感じで,カンマでなく、かつ、それぞれ別々にメッセージボックスに表示される。うまく要素を取得するには再帰処理などが必要になるかも
Private Sub CommandButton1_Click()
Dim hoge As Boolean
hoge = LoadMyXML(TextBox1.Text, TextBox2.Text)
End Sub
回答ありがとうございます。お礼が遅くなり申し訳けございません。
回答をもとに、いろいろと試しておりました。
うまく使えそうです。本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- アプリ Android studio 初心者 Hello Android!しか表示されない 1 2023/08/01 08:47
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
xmlはどんな用途で使われている
-
CPUの考え方を教えてください ...
-
XMLで要素が記述された順番に意...
-
バッチファイルでテキストファ...
-
昔Winnyってありましたけど、あ...
-
あせんうぶり言語
-
XSLで、XMLの空タグを制御したい。
-
VB6でXMLを作成しているのです...
-
SNMP リンクダウンとノードダ...
-
あるノードリストに、特定の名...
-
HTTPステータス 404 - There is...
-
コンテキストメニュークリック...
-
ノードの並び替え
-
Listからのnull要素を削除方法は?
-
ルート要素ノードが2個ある場合?
-
ノードとは
-
このエラー、何とかなりません...
-
html→xmlの変換
-
xmlファイルが上手にHTMLに変換...
-
Excel-VBAでXMLの複数ノードの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB6でXMLを処理するには
-
VBAのXML処理でメモリが足りない?
-
xmlはどんな用途で使われている
-
Delphiのxmlデータバインディン...
-
XMLデータを文字列分割&処理す...
-
xmlはhtmlとどこが違うのでしょ...
-
東芝のDynabookなのですがアン...
-
CPUの考え方を教えてください ...
-
昔Winnyってありましたけど、あ...
-
SNMP リンクダウンとノードダ...
-
ルート要素ノードが2個ある場合?
-
バッチファイルでテキストファ...
-
XMLで要素が記述された順番に意...
-
UTF-8でエンコーディングとはど...
-
あるノードリストに、特定の名...
-
google croud にあるファイルを...
-
XML、XSLTの適応エラー(IEから...
-
XPathで途中に名前空間が設定さ...
-
同じタグ名の項目取得
-
xmlファイルが上手にHTMLに変換...
おすすめ情報