人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

vb.netでxmlデータのネスト(性別要素)を削除する方法を教えていただけますでしょうか。宜しくお願いいたします。

<ブックリスト>
<アイテム id=”11111”>
<タイトル>簡単なXML</タイトル>
<筆者>山田太郎</筆者>
<性別>男性</性別>
<カテゴリ>1</カテゴリ>
</アイテム>
<アイテム id=”22222”>
<タイトル>XML講座</タイトル>
<筆者>田中花子</筆者>
<性別>女性</性別>
<カテゴリ>2</カテゴリ>
</アイテム>
</ブックリスト>

●質問者: tosimix
●カテゴリ:コンピュータ 学習・教育
✍キーワード:VB.NET XML データ ネスト 女性
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● okegawa
●10ポイント

http://www.yahoo.co.jp/

Yahoo! JAPAN

URLはダミーです。

テキストファイルを読み込んで、「<性別></性別>」が含まれる文字列を削除するのは駄目なんでしょうか?

質問の趣旨からはずれてしまうかも知れませんが...

こういったちょっとしたテキスト処理でしたらわざわざvbなんか使わないで、perlか何かで処理してしまったほうが楽だと思いますよ。

◎質問者からの返答

okegawaさま、ご回答ありがとうございます。

perlはまったく存じ上げないので、すみません。実は、vb.netも初心者なのですが。。。

要素ごとの削除ができればと思います。

また何か情報がございましたら、宜しくお願いいたします。


2 ● ohmix1
●40ポイント

http://www.microsoft.com/downloads/details.aspx?FamilyID=3144b72...

ダウンロードの詳細 : MSXML 4.0 Service Pack 2 (Microsoft XML Core Services)

MSXMLコンポーネントをXMLを操作します。上記URLにはリファレンスなどがあります。

以下のサンプルプログラムではVBScriptで作成していますが、vb.netでも考え方は同じです。

--------------------------------------------------test.vbsここから

Dim xmldoc

Set xmldoc = WScript.CreateObject(”microsoft.xmldom”)

’Set xmldoc = WScript.CreateObject(”MSXML2.DOMDocument.4.0”)

’--- XML文書読み込み

xmldoc.async = false

xmldoc.Load(”load.xml”)

Dim theRoot

Set theRoot = xmldoc.documentElement

’--- 要素検索

Dim nodeList

Set nodeList = xmldoc.selectNodes(”//性別”)

’--- 検索結果の削除

Dim node

For Each node in nodeList

node.parentNode.removeChild node

Next

’--- XML文書の保存

xmldoc.save(”save.xml”)

--------------------------------------------------test.vbsここまで

http://www.atmarkit.co.jp/fxml/rensai/msxml03/msxml04.html

XSL/XSLTを利用したデータの変換と整列

また、上記のようにXMLを直接操作しなくとも、XSLTを利用すればプログラムはもっと簡単になり柔軟性も増します。

ただし、XSLTの文法を学ばなくてはならないのと、

MSXMLバージョン3.0以降でなければXSLTをサポートしていません。

http://www.keiyu.com/doc/msxml.htm

Internet ExplorerとMSXML(KeiYu HelpLab)

◎質問者からの返答

ohmix1さま

ご回答ありがとうございます。

試してみます。


3 ● shorita
●40ポイント

http://www.atmarkit.co.jp/fdotnet/easyxml/index/index.html

@IT:連載:.NETで簡単XML

ここのページでその辺の方法について書かれています。DOMオブジェクトを使って要素を操作するか、シリアライズ/デシリアライズで要素を削除する方法があります。

◎質問者からの返答

shoritaさま

ご回答ありがとうございます。

やはりDOMを使っての操作となるようですね。

試してみます。

ありがとうございます。


4 ● karo_jp
●40ポイント

http://www.atmarkit.co.jp/fdotnet/easyxml/easyxml01/easyxml01_04...

@IT:連載:.NETで簡単XML 第1回 XML超入門

@ITの記事です。DOMやXMLプログラミングの詳細はこちらを参照してください。

簡単に説明すると、DOMのSelectNode または SelectSingleNode を使ってノードを選択し、その親ノードをたどって RemoveChildで対象ノードを削除する、となります。

XmlNode node = doc.SelectSingleNode(”性別”)

node.ParentNode.RemoveChild( node )

ちょっとややこしいですが・・・

◎質問者からの返答

karo_jpさん

ご回答ありがとうございます。

初心者には難しそうですね。。。

また何かお聞きするかもしれませんが、

そのときは宜しくお願い致します。

ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ