
こんにちは
.vbsのスクリプトを書いています。XMLファイルから値を取得する内容なのですが
XMLファイルの一部:
<tag>This is the text I want to get. </tag>
.vbsスクリプトの一部 (途中を省いています):
Set objXML = CreateObject("MSXML2.DOMDocument")
result = objXML.Load(fPath)
Set nodeRoot = objXML.DocumentElement
Set elem = nodeRoot.getElementsByTagName("tag")
bar = elem(0).Text
上記のような方法で取得したテキストデータは、実際のXMLファイルにあった前後のスペースが取得できません。XMLファイル内では「get. 」のようにピリオドの後にスペースがあるのですが、スクリプトで取得したデータは末尾にスペースがありません(「get.」で終わる)。先頭にスペースがある場合も同様の挙動をします。
勝手にトリムされずに、XMLタグの中にあるテキストのままを取得するにはどうしたらよいでしょうか。
.Value, .innerText, .innerContent と記述するとサポートされないとのことでエラーが出ます。
elemのNodeTypeは1で、要素のようです。
Xpathによる要素取得もしてみましたが、結果は同じでした。
最終手段として、xml読み込み前に、xmlファイルの「スペース+</tag>」のスペースを別の文字に置き換えて、読み込み後にその文字をスペースに戻す、という方法でしょうか。
もっとスマートにできる方法がある気がしますし、この仕様は多くの人が困っているのではないかと思います。
アドバイスお願いします。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
elem(0) の .Text ではなく、
.ChildNodes から .NodeType が Text であるすべての子ノードを抜き出し、
ノードの .Value を結合すれば正しい値が取れると思います。
場合によっては CDATASection も対象に入れましょう
ありがとうございます。
今ひとつ飲み込めませんでした。
elemのChildNodesからNodeTypeがText (=1)のものを抜き出して、それらのノードのValueを結合する、ということでしょうか?
まず、.Value と記述するとサポートされないというエラーが出てきてしまいます。
elemの中には1センテンスのテキストデータしか入っていません。
elemの1つ上の階層の要素を取得して、そのChildNodes (=elemを含む)に対して操作する、ということなのでしょうか?
もしよろしければ、考え方のヒントになるコード(一部で結構です)を教えていただけますでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CPUの考え方を教えてください ...
-
ルート要素ノードが2個ある場合?
-
2分探索木の高さを求めるプロ...
-
ツリービューのノードをダブル...
-
(VB.NET)TreeViewのノード文...
-
replaceChildメソッドについて
-
最短路問題について
-
昔Winnyってありましたけど、あ...
-
TreeView の初期表示について
-
【C#】TreeViewでクリックした...
-
同じタグ名の項目取得
-
DLL共用セクションの質問です
-
VBSでxmlの値を書き換えたい
-
4バイトを10進数に変換する方法
-
重複するものを消したい
-
VBA XML の置換方法
-
XMLとXHTMLの違いって??
-
XMLファイル内のデータ(値)を変...
-
Excel-VBAでXMLの複数ノードの...
-
XML、XSLTの適応エラー(IEから...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CPUの考え方を教えてください ...
-
ルート要素ノードが2個ある場合?
-
SNMP リンクダウンとノードダ...
-
複数のマックPCによる数値計算...
-
同じタグ名の項目取得
-
C# TreeView 効率良いノード追...
-
C#でTreeViewのCheckBoxのサイ...
-
昔Winnyってありましたけど、あ...
-
2分探索木の高さを求めるプロ...
-
ツリーでのアイコンの設定
-
各ノードの行数取得
-
ツリービューのノードをダブル...
-
ノードとは
-
TreeVIewのノード名を編集する...
-
あるノードリストに、特定の名...
-
最短路問題について
-
TreeViewコントロールについて
-
XML::LibXMLのfindnodes()で、...
-
XML文書の指定した属性値を持つ...
-
ツリービューの使い方が・・・
おすすめ情報