• 締切済み

ノードの削除

フォームから送信した内容に対応するノードを DOMツリーから削除する方法が思いつかず困ってます。 var kekka = root.selectNodes(XPath); のようにして直接ノードリストを取得しています。 ●.removeChild(▲)を利用してノードが削除できることはわかるのですが、 今回の場合の、●▲に入る変数がまったく検討がつきません。

みんなの回答

回答No.1

kekka.parentNode.removeChild(kekka) とか?

riinasc
質問者

お礼

自己解決しましたありがとうございました。

関連するQ&A

  • PHPでのXMLの編集・削除の方法

    XMLの編集・削除をPHPで行いたいと思っています。 その際に、どの要素なのかを指定したいと思うのですが なかなか方法が分からずに困っています。 調べてみて、Xpathを利用して指定し 削除をする時には DOMNode = DOMNode->removeChild(ノード) 編集する時には DOMNode->nodeValue = 値 と、いうものを利用すればいいのかな?と分かってきたのですが 実際、PHPに組み込んでみても、動いてくれず分からなくなっています。 【削除PHP】 foreach ($_POST['number'] as $key => $value){ $xpath = new DOMXPath($doc); $xpath_title = $xpath->query("//title[parent::record/@number=$value]"); //要素ノードの取得 $dataElement = $doc->getElementsByTagName("title")->item(0); //削除 $dataElement->removeChild($xpath_title) or die("削除できません。"); } 【編集PHP】 $xpath = new DOMXPath($doc); $xpath_title = $xpath->query("//record/@number=$session_number"); //値の変更 $session_title = $_SESSION["title"]; $xpath_title->title->nodeValue = $session_title; print $xpath_title->title->nodeValue; 【XML】 <renew>  <record number="000000">   <title>タイトル</title>   <paragraph>内容</paragraph>  </record> </renew> 字数制限の為に、コードも必要最低限だと思われるものしか 記述していません。これでは分からないという事であれば 追記で記述しますので、分かる方は是非教えてください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • xpathでノードのポジションを得る

    position()でポジションを取得したいのですが、 <xsl:apply-templates select="//test[position()]" /> のようなかんじにしてtestノードのposition()リストを 取得するようなことはできないのでしょうか。 まあ、 <xsl:template match="test"> <xsl:value-of select="position()" /> </xsl:template> こういうテンプレートつくれば結果的に取れると思うんですが、 今回はこれはなしでお願いします。 xpathだけでpositionをしゅとくできないものでしょうか。

    • ベストアンサー
    • XML
  • XML::XPath -- 追加したノードが見付からない

    XMLのテンプレートを既存のXMLに追加したのですが、 その後 findnodes() で検索しても合致しません。 XML::XPath::Node::Element->new() を使って作成したものは 合致してくれます。 XML::XPath::XMLParser でパースしたものを追加して findnodes() で合致させるにはどのようにしたらよいのでしょうか。 ------------------------------- use XML::XPath; #### 元のXML my $xmldata = <<EOM; <?xml version="1.0" encoding="UTF-8" ?> <list>   <item>orange</item>   <item>apple</item>   <item>lemon</item> </list> EOM ### 追加するXMLのテンプレート my $xmlappend = <<EOM;   <item>pine</item> EOM ## 追加先ノードを取り出す my $xml = XML::XPath->new( xml=>$xmldata ); my ($list) = $xml->findnodes('/list'); ## 追加用XMLを作成して追加 my $append = XML::XPath::XMLParser->new( xml=>$xmlappend )->parse; $list->appendChild( $append ); ## もういっこ追加。こちらはこの場で作る $newnode = XML::XPath::Node::Element->new('item'); $newtext = XML::XPath::Node::Text->new('banana'); $newnode->appendChild( $newtext ); $list->appendChild( $newnode ); ## 現状確認 → pine は入っていた print $list->toString."\n"; ## item一覧を取得 @nodes = $xml->findnodes('/list/item'); ## 一覧を出力 → 追加した pine が出力されない。 bananaはある。 map{ print $_->toString."\n" } @nodes;

    • ベストアンサー
    • Perl
  • VB2005 ツリービューに子ノードを追加

    VB2005 ExpressEditionにて開発しています。 フォームロード時にデータセットからツリービューにデータをセット しようとしています。 ルートノードには  Dim Node As TreeNode  Node = TreeView2.SelectedNode  TreeView2.Nodes.Add("追加したい名前") で追加できます。 子ノードを追加する時はどうしたらいいのでしょうか。 ご存知の方がいらっしゃいましたら教えて下さい。 よろしくお願いします。

  • removeChildを使っても変化なし PHP5.0

    idが条件に合ったら子ノードを削除する。という簡単なことをしたいのですが、サンプルソースをコピーして簡単なソースを作りましたが、何を変えてもエラーメッセージも出なければ、XMLファイルに変化もありません。 どなたか詳しい方削除ができない理由を教えてください。 books.xml <?xml version="1.0" ?> <data> <p><name id="1">aaaa</name><ad>1111</ad></p> <p><name id="2">bbbb</name><ad>2222</ad></p> <p><name id="3">cccc</name><ad>3333</ad></p> <p><name id="4">dddd</name><ad>4444</ad></p> <p><name id="5">eeee</name><ad>5555</ad></p> <p><name id="6">ffff</name><ad>6666</ad></p> </data> xmltest.php <?php //ドキュメントオブジェクトの作成 $doc = new DOMDocument(); //XML 文書ファイルのパース(DOM ツリーの作成) $doc->load("books.xml"); $id='3'; //DOMXPath オブジェクトの作成 $xpath = new DOMXPath($doc); //ローケーションパスの作成 $query = "/data/p[name[@id='$id']]"; //XPath を評価する 戻り値は、DOMNodeList $nodeList = $xpath->query($query); $pNode = $nodeList->item(0); //print $pNode -> textContent; //"data"要素ノードの取得 $dataElement= $doc->getElementsByTagName("data")->item(0); //print $dataElement -> textContent; //データを削除する $dataElement->removeChild($pNode); ?> これでidが3の行を消したいです

    • 締切済み
    • XML
  • DOMツリーの作り方。

    XMLのDOMツリーをjavaで作りたいです。 ---Root.xmlファイル--- <?xml version="1.0!> <root></root> ------ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = dbf.newDocumentBuilder(); Document root = builder.parse("c:/tmp/Root.xml"); /*rootの子ノードとして新しいノード(title)を追加していく*/ といったやり方があると思うんですが、 そうではなく、プログラム内でrootドキュメントを作ってtitle子ノードを追加していきたいんです。 つまり、Root.xmlに頼りたくないということなんですが、どうしたらよいでしょうか?

    • 締切済み
    • XML
  • Access リスト選択したレコードを削除

    Access2000(初心者) フォームで検索したレコードをリスト表示させています。 そのリストで選択したレコードをコマンドボタンで削除したいです。 拡張で複数選択して選択した全てのレコードを削除する方法を 教えて下さい。 ※リスト検索は下記方法で表示させています。 Dim var条件 As Variant Dim var行 As Variant For Each var行 In Me.リスト名.ItemsSelected var条件 = var条件 & IIf(Not var条件 = "", ",", "") & _ Me.リスト名.Column(0, var行) ' --- A Next For i% = 1 To Me.リスト名.ListCount Step 1 If Me.リスト名.Selected(i%) = True Then DoCmd.OpenForm "フォーム名", , , "ID IN (" & var条件 & ")" ' --- B Exit Sub End If Next i% MsgBox "リストで選択してください"

  • 指定した配列と一致したデータを削除したい

    下記のような形でarrayに該当する文字列を含んだhrefとその親要素をremoveChildで削除したいのですが、hrefからarrayに該当するデータだけを取り出すにはどうしたら良いのかが分かりません。 何か良い方法がありましたらアドバイスを頂ければと思います。 よろしくお願い致します。 var array = [ "example.com", "example.net", "subdomain.example.org", "example.jp/subdirectory" ]; var links = document.getElementsByTagName("a"); var href = links.getAttribute("href"); var parent = links.parentNode; document.body.removeChild(取り出したデータ); // html <ul> <li><a href="http://example.com ">A</a></li> <!-- リストアイテムごと消える --> <li><a href="http://example.net/subdirectory/post.html ">B</a></li> <!-- リストアイテムごと消える --> <li><a href="https://example.org ">C</a></li> <!-- 消えない --> <li><a href="http://example.jp/subdirectory/post.html ">D</a></li> <!-- リストアイテムごと消える --> </ul> <a href="https://subdomain.example.org ">E</a> <!-- 消える -->

  • PHP SimpleXml unsetについて

    SimpleXMLにて特定のノードを検索し、検索結果を削除しようとしています。 まず、下記ソースコードの「削除1」を行っていたのですが、 $xmlから検索結果が削除されず「削除2」に修正したところ正常に削除されるようになりました。 「削除1」と「削除2」は検索結果をforeachで直接使用しているか、 一度変数にセットして利用するかの違いなのですが、 なぜ変数に検索結果をセットするとunsetで削除されなくなるのかわかりません。 PHP初心者でして、初歩的な質問かと思いますが、どなたか教えていただけないでしょうか? 宜しくお願い致します。 -------------------------------------------- $xml = new SimpleXMLElement($filepath, null, true); // 削除1 $items = $xml->xpath($name . '[' . $column . '="' . $value . '"]'); foreach( $items as $item ) { unset($item); $ret ++; } // 削除2 foreach( $xml->xpath($name . '[' . $column . '="' . $value . '"]') as $item ) { unset($item[0]); $ret ++; } file_put_contents($filepath, $xml->asXML());

    • ベストアンサー
    • PHP
  • XML::DOM / XML::XPathでソート

    XML::DOMで効率的なソートの方法はどんなものがありますでしょうか。 一応動くものは作れたのですが、効率的とは言い難く、しかも ソート項目が一意のデータでないといけないという欠点があります。 ############################################### use XML::DOM::XPath; my $xml = <<EOM; <?xml version="1.0" encoding="UTF-8" ?> <list> <item id="10">Apple</item> <item id="5">Orange</item> <item id="20">Melon</item> </list> EOM my $parser = XML::DOM::Parser->new(); my $doc = $parser->parse( $xml ); ## <item>タグの一覧を作成 my @list = $doc->findnodes('/list/item'); ## <item>タグ id属性一覧を作成 my @idlist = map{ $_->getAttribute("id") } @list; ## id属性順にソート foreach my $id ( sort{ $a<=>$b } @idlist ){ ## id属性値を指定してノードリストを取得 my @item = $doc->findnodes('/list/item[@id='.$id.']'); ## idは一意なのでリストの先頭で固定 print $item[0]->getAttribute('id')."\n"; print $item[0]->getFirstChild->getNodeValue."\n"; } ############################################### ハッシュなら sort{ $hoe{$b} <=> $hoe{$a} } keys %hoe といった方法があるのですが、XML::DOMの場合は同じようにいきません。 良い方法がありましたらお願いします。

    • ベストアンサー
    • Perl

専門家に質問してみよう