C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: VB.NET XML 親要素のみの削除方法


(過去ログ 127 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■75763 / inTopicNo.1)  VB.NET XML 親要素のみの削除方法
  
□投稿者/ craf (1回)-(2015/04/30(Thu) 20:06:34)

分類:[VB.NET/VB2005 以降] 

お世話になっております。現在XMLの加工でわからないことがあり作業が止まっております。
開発環境については下記の通りです。

開発環境 Microsoft Visual Studio 2005
Version 8.0.50727.762 (SP.050727-7600)
Microsoft .NET Framework
Version 2.0.50727 SP2

インストールされている Edition: Professional

Microsoft Visual Basic 2005



下記のXMLの<RemoveTar>のみを削除したいのですが、何かいい方法はありませんでしょうか。

----------加工前のXML-------------------

<?xml version="1.0" encoding="UTF-8"?>
<DataRoot><AppData ID="AppData"><UserID>test</UserID>
</ApplData>
<RemoveTar><Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="20150430113055"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"></SignatureMethod>
<Reference URI="#ApplData"><Transforms><Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></Transform>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
<DigestValue></DigestValue>
</Reference>
</SignedInfo>
<SignatureValue></SignatureValue>
<KeyInfo><X509Data><X509Certificate></X509Certificate>

</X509Data>
</KeyInfo>
</Signature></RemoveTar>
</DataRoot>

----------加工後のXML-------------------
<?xml version="1.0" encoding="UTF-8"?>
<DataRoot><AppData ID="AppData"><UserID>test</UserID>
</ApplData>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="20150430113055"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"></SignatureMethod>
<Reference URI="#ApplData"><Transforms><Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></Transform>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
<DigestValue></DigestValue>
</Reference>
</SignedInfo>
<SignatureValue></SignatureValue>
<KeyInfo><X509Data><X509Certificate></X509Certificate>

</X509Data>
</KeyInfo>
</Signature>
</DataRoot>
引用返信 編集キー/
■75767 / inTopicNo.2)  Re[1]: VB.NET XML 親要素のみの削除方法
□投稿者/ WebSurfer (557回)-(2015/04/30(Thu) 21:15:04)
No75763 (craf さん) に返信

> 下記のXMLの<RemoveTar>のみを削除したいのですが、何かいい方法はありませんでしょうか。

何を使ってそのような操作をしたいのでしょうか?

当然、メモ帳で開いて削除するなどという話ではなくて、XmlDocument など
.NET Framework のライブラリを使ってそれをしたいのだと理解していますが、
そうであればそのあたりこことを詳しく書いていただけませんか?
引用返信 編集キー/
■75768 / inTopicNo.3)  Re[2]: VB.NET XML 親要素のみの削除方法
□投稿者/ craf (2回)-(2015/04/30(Thu) 21:19:45)
2015/04/30(Thu) 21:20:57 編集(投稿者)
2015/04/30(Thu) 21:20:48 編集(投稿者)

<pre><pre>■No75767 (WebSurfer さん) に返信
> ■No75763 (craf さん) に返信
> 
>>下記のXMLの<RemoveTar>のみを削除したいのですが、何かいい方法はありませんでしょうか。
> 
> 何を使ってそのような操作をしたいのでしょうか?
> 
> 当然、メモ帳で開いて削除するなどという話ではなくて、XmlDocument など
> .NET Framework のライブラリを使ってそれをしたいのだと理解していますが、
> そうであればそのあたりこことを詳しく書いていただけませんか?

WebSurfer さん 返信ありがとうございます。
おっしゃる通り、説明が足りませんでした。

XmlDocument を使用して削除したいと考えております。
下記のようなプログラムを書いたところ子ノードも削除されてしまい困っています。

        'RemoveTarタグの削除
        'ルート要素を取得する
        Dim rootElement As System.Xml.XmlElement = xmlDoc.DocumentElement

        'ルート要素の子要素である"RemoveTar"を取得する
        Dim nodelist As System.Xml.XmlNodeList = rootElement.GetElementsByTagName("RemoveTar")

        '指定した"RemoveTar"タグが存在するか?
        If nodelist.Count > 0 Then
            'RemoveTarタグを削除する
            rootElement.RemoveChild(nodelist.Item(0))
        End If
</pre></pre>

引用返信 編集キー/
■75769 / inTopicNo.4)  Re[3]: VB.NET XML 親要素のみの削除方法
□投稿者/ Hongliang (308回)-(2015/04/30(Thu) 22:10:38)
nodelist(0)をRemoveChildした後で、nodelist(0)のChildNodesをrootElementにAppendChildしてやればいいんじゃないでしょうか。
引用返信 編集キー/
■75770 / inTopicNo.5)  Re[3]: VB.NET XML 親要素のみの削除方法
□投稿者/ WebSurfer (558回)-(2015/05/01(Fri) 00:13:48)
No75768 (craf さん) に返信

> 下記のようなプログラムを書いたところ子ノードも削除されてしまい困っています。

・・・中略・・・

> rootElement.RemoveChild(nodelist.Item(0))

それで終わりにしたのでは、Remove したノードの下の「子ノードも削除されてしまい」
ということになるのは当然だと思うのですが。

RemoveTar ノードの下の子ノード全てをルートに Append してから RemoveTar ノード
をルートから Remove しないとダメですよね。

もしくは、Hongliang さんが書かれたように、RemoveTar ノードを Remove した後で、
RemoveTar ノードの中の子ノードを親に Appned しないと。

引用返信 編集キー/
■75772 / inTopicNo.6)  Re[4]: VB.NET XML 親要素のみの削除方法
□投稿者/ craf (3回)-(2015/05/01(Fri) 02:07:52)
No75770 (WebSurfer さん) に返信
> ■No75768 (craf さん) に返信
>
>>下記のようなプログラムを書いたところ子ノードも削除されてしまい困っています。
>
> ・・・中略・・・
>
>>rootElement.RemoveChild(nodelist.Item(0))
>
> それで終わりにしたのでは、Remove したノードの下の「子ノードも削除されてしまい」
> ということになるのは当然だと思うのですが。
>
> RemoveTar ノードの下の子ノード全てをルートに Append してから RemoveTar ノード
> をルートから Remove しないとダメですよね。
>
> もしくは、Hongliang さんが書かれたように、RemoveTar ノードを Remove した後で、
> RemoveTar ノードの中の子ノードを親に Appned しないと。
>

ありがとうございます。RemoveTar ノードの下の子ノード全てをルートに Append してから RemoveTar ノードをルートから Removeで思ったように出力できました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -