2012-05-09 5 views
0

私は、次のJDOM APIを使用してXML属性を削除しますか?

例のようにJDOM要素を持っている:XML(JDOM要素)

<Details> 
<Uniqueno>11111</Uniqueno> 
<ROWSET name="Persons"> 
<ROW num="1"> 
<Name>60821894</Name> 
<Age>938338789</Age> 
</ROW> 
<ROW num="2"> 
<Name>60821894</Name> 
<Age>938338789</Age> 
</ROW> 
</ROWSET> 
</Details> 

私は次のように変換したい:

<Details> 
<Uniqueno>11111</Uniqueno> 

<ROW num="1"> 
<Name>60821894</Name> 
<Age>938338789</Age> 
</ROW> 
<ROW num="2"> 
<Name>60821894</Name> 
<Age>938338789</Age> 
</ROW> 

</Details> 

ノート:ROWSET要素が削除されました

Jを使用して要素を削除したいDOM API?

+0

....が、より多くのキャストと、あなたが似た何かを行うことができますJDOMの1.1を使用している場合

for (Element rowset : details.getChildren("ROWSET")) { rowset.detach(); for (Content c : rowset.getContent()) { details.addContent(c.detach()); } } 

を行セットは属性ではありません。それは要素です。それを削除するには、後で元の場所に復元するために、そのコンテンツをどこかに保存する必要があります。 –

答えて

1

何を試しましたか?

  1. (ドキュメントルートである)Detailsタグ
  2. を探すDetailsタグにROWSET呼び出しノードにdetach()方法及びappend()この戸建ノードの各ROWタグのROWSETタグ
  3. を探します。
  4. ROWSETタグを削除します。いくつかのサンプルコードでは

// 1 
Element details = doc.getRootElement(); 
// 2 
Element rowset = details.getChild("ROWSET"); 
// 3 
for (Element row: rowset.getChildren()) { 
    Element r = row.detach(); 
    details.appendChild(r); 
} 
// 4 
details.removeChild(rowset); 

テストされていない、より多くの情報のためには、JDOM APIをご確認ください。

+0

いくつかのサンプルコードを取得できますか? –

+0

私はいくつかのコードサンプルを追加しました – Alex

1

あなたが何か行うことができますJDOM 2.0.xの使用している場合:

+0

上記のおかげでありがとうございましたが、detachまたはremove.Howを使ってJDOM 1.xを使って切り離す(削除する)ことができません。 –

+0

1.xでデタッチすることができます。ちょうど良いキャストが必要です... http://jdom.org/docs/apidocs.1.1/org/jdom/Content.html#detach%28%29 – rolfl

関連する問題