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


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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/08/17 08:34:55
  • 終了:--

回答(4件)

id:okegawa No.1

okegawa回答回数9ベストアンサー獲得回数02004/08/17 09:12:15

ポイント10pt

URLはダミーです。

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

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

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

id:tosimix

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

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

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

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

2004/08/17 09:35:09
id:ohmix1 No.2

ohmix1回答回数235ベストアンサー獲得回数142004/08/17 09:28:53

ポイント40pt

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)

id:tosimix

ohmix1さま

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

試してみます。

2004/08/17 10:54:36
id:shorita No.3

shorita回答回数30ベストアンサー獲得回数02004/08/17 10:25:58

ポイント40pt

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

id:tosimix

shoritaさま

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

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

試してみます。

ありがとうございます。

2004/08/17 10:56:17
id:karo_jp No.4

karo_jp回答回数6ベストアンサー獲得回数02004/08/17 10:38:13

ポイント40pt

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 )

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

id:tosimix

karo_jpさん

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

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

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

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

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

2004/08/17 20:06:02

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません