• ベストアンサー

何番目のParentNodeのChildNodeかわかりません。

C#のDOMを使ってXMLを読み取るときに、 XmlNodeListから取得できますが、 ParentNodeが同じものがある場合、(下記) 何番目のParentNodeのChildNodeかわかりません。 <parent> <child>1</child> <parent> <child>2</child> <parent> <child>3</child> ChildNode.Countでの個数が3つというのは取得できますが、 何回目のParentNodeのChildなのかを調べることは可能でしょうか?

  • ENTRE
  • お礼率0% (16/2523)
  • XML
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • oboroxx
  • ベストアンサー率40% (317/792)
回答No.1

ノード同士を比較するだけで同じかどうかわかるようです。 http://www.oborodukiyo.info/Forms/F-XMLSameParent.aspx

関連するQ&A

  • XMLの子要素追加の順番について

    PHP板が見つからなかったのでここに・・・ $dom = new DOMDocument(); $dom->formatOutput = true; $dom->load("test.xml"); で読み込み $child = $parent->appendChild($dom->createElement('child')); $child->appendChild($dom->createCDATASection($_POST['post'])); このように追加を行った場合 XMLには、追加されますが上から順番に追加されていきます。 <parent> <child>追加1</child> <child>追加2</child> <child>追加3</child> <parent> 下記のように先頭に追加する場合はどのようにすればいいのでしょうか? <parent> <child>追加3</child> <child>追加2</child> <child>追加1</child> <parent> ご回答のほどよろしくお願いします。

    • ベストアンサー
    • PHP
  • ノードの並び替え

    こんばんわyukimura1024です。 javaでDOMを使ってXMLファイルを作成していますが、ノードを並び替える方法がわかりません。 例えば以下の例ようなXMLがあり、これをA→Bのように並び替えるといったものです。 いったん取り出して作り直せばよいのですが、階層が深いとコピーが大変ですよね。 (調べたところ深いコピーはなかったです) これを簡単に実現するいい方法はないものでしょうか? ご存知の方、教えていただけると助かります!よろしくお願いします。 例) (A) <PARENT>  <CHILD1/>  <CHILD2/>  <CHILD3/> </PARENT> (B) <PARENT>  <CHILD3/>  <CHILD2/>  <CHILD1/> </PARENT>

    • ベストアンサー
    • XML
  • ソートした際の、特定のデータの番目を出したい

    例として、id,count というフィールドを用意し、下記のようなデータを使用します。 id count A 5 B 2 C 3 このデータから、Aは ORDER BY count DESC で何番目なのか、Bは、Cは、といった形で、各々が何番目なのかを取得することは可能ですか? また、可能でしたらどのような方法が考えられるでしょうか。 単純な例で言うと count で降順にソートした際の、id A と id C の番目を取得したい。 (Aは0・Cは1、番目が1からの場合 Aは1・Cは2といったデータ) といったピンポイントでピックアップしていくような使い方をしたいと思っています。 また、取得後はPHPでデータを利用します。 少ないデータなら、全てのデータを取得してからPHPで振り分けも可能ですが、大量のデータがある際に効率的にできないかと質問させていただきました。 よろしくお願い致します。 ----------------- 環境  PHP 5.2.5  MySQL 5.1.22

    • ベストアンサー
    • MySQL
  • PHP5 XML 既存属性ノードから属性を追加する方法

    お世話になっています。 現在PHP5を勉強中のものです。 XMLとの連携で下記のようなことを行いたいと思っています。 ・XMLを用いてアクセスログ(日計)を作ってみる。 ・(1)→(2)のように日々属性ノードが追加される。 【既存XML】 (1)<<AcLog.xml>>※2007/02/05 現在 ----------------------------------------------------- <?xml version="1.0" encoding="utf-8"?> <parent> <Accsess id="1"> <Date>20070205</Date> <Count>10</Count> </Accsess> </parent> (2)<<AcLog.xml>>※2007/02/06 現在 ----------------------------------------------------- <?xml version="1.0" encoding="utf-8"?> <parent> <Accsess id="1"> <Date>20070205</Date> <Count>10</Count> </Accsess> <Accsess id="2"> <Date>20070206</Date> <Count>1</Count> </Accsess> </parent> ----------------------------------------------------- 現在様々な参考書やネットサンプルなど見てはいるのですが、 どうしても<parent>の外で作成されてしまったりなど、 良い結果を生んでいません。 こんなことで質問するのはどうかとも思っておりますが、 サンプルサイトなどございましたらご教授ください。 よろしくお願いします。

    • 締切済み
    • PHP
  • 紐づいた個数を取得したい

    以下のようなテーブルがあった場合、PARENT が 0 のものを抜き出して、且つそれに紐づいてるカラムの個数を取得したいのですが、どのようにしたらいいでしょうか? +---+----+--------+ + ID | XXX | PARENT | +---+----+--------+ + 1 | *** | 0 | +---+----+--------+ + 2 | *** | 1 | +---+----+--------+ + 3 | *** | 4 | +---+----+--------+ + 4 | *** | 0 | +---+----+--------+ + 5 | *** | 1 | +---+----+--------+ + 6 | *** | 0 | +---+----+--------+ + 7 | *** | 4 | +---+----+--------+ + 8 | *** | 4 | +---+----+--------+ *PARENT には、ID に紐づいた値が入ります 出力例 +---+----+--------+ + ID | XXX | COUNT | +---+----+--------+ + 1 | *** | 2 | +---+----+--------+ + 4 | *** | 3 | +---+----+--------+

  • 親のパラメータの取得

    いつもお世話になっています。 XML, XSL等の勉強を始めました。 子供から親のパラメータを取得する方法がよく分かりません。 sample.xsl ---------------------- <?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="parent"> hello?:<xsl:value-of select="@hello" /><br /> <xsl:apply-templates select="child" /> </xsl:template> <xsl:template match="child"> hello2?:<xsl:value-of select="@hello" /><br /> </xsl:template> </xsl:stylesheet> sample.xml ------------------------------ <?xml version="1.0" encoding="Shift_JIS" ?> <?xml-stylesheet type="text/xsl" href="xmlsample.xsl" ?> <parent hello="hello2"> <child /> </parent> こんな感じでやっています。 parentの中で、childのtemplateがapplyしてあります。 こうすると、<parent>の中で<child>が呼び出されるのですが、このchildの中でparentに指定してあるパラメータhelloの値が取得したいです。 できれば変数に代入するとかせずに(まだトライしていません)、直接childからparentのhelloパラメータの内容を取得したいと思っています。 このようなことはxml, xslで可能なのでしょうか。 またどうすれば出来るのかご存じの方が居たら、よろしくお願いします。

    • ベストアンサー
    • XML
  • XSLTによるノードの抽出の際に親のnamespaceで子ノードのnamespaceが上書きされないようにするには?

    下記のようなXMLに <?xml version="1.0" encoding="EUC-JP"?> <parent xmlns:xhtml="http://parent"> <child id="A1"> <taroh xmlns="http://child"> <age>10</age> </taroh> </child> </parant> 下記のようなXSLTを適用した場合、 <?xml version="1.0" encoding="EUC-JP"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" > <xsl:output method="xml"/> <xsl:template match="text()|@*"> </xsl:template> <xsl:template match="node()[@id='A1']"> <xsl:copy-of select="./node()"/> </xsl:template> </xsl:stylesheet> 通常下記のような結果となりますが、 <?xml version="1.0" encoding="EUC-JP"?> <taroh xmlns="http://parent"> <age>10</age> </taroh> namespaceを変更させずに、下記のような結果を 得るためにはどのようにすればよいでしょうか? <?xml version="1.0" encoding="EUC-JP"?> <taroh xmlns="http://child"> <age>10</age> </taroh> 抽出には javax.xml.transform.Transformerを用いています。 どうか、よろしくお願いします。

    • 締切済み
    • XML
  • domでのXML作成について

    PHP4.2のdomを使い、下記のようなXMLを作成したいです。 しかし、Itemのノードに対して、NUMBERとNAMEという子ノードを2つつけるやり方が分からず困っています。 PHPは書いて見たのですが、上手くいっていません。 教えていただけると助かります。 宜しくお願いします。 【作成したいXML】 <Response> <Items> <Item> <NUMBER>47</NUMBER> <NAME>沖縄県</NAME> </Item> </Items> </Response> 【PHP】 $dom = domxml_new_doc("1.0"); $Response = $dom->create_element("Response"); $root = $dom->append_child($Response); $Items = $dom->create_element("Items"); $Item = $dom->create_element("Item"); $NUMBER = $dom->create_element("NAME"); $text1 = $dom->create_text_node("47"); $NUMBER->append_child($text1); $NAME = $dom->create_element("NAME"); $text2 = $dom->create_text_node("沖縄"); $NAME->append_child($text2); $Item->append_child($NAME); $Items->append_child($Item); $root->append_child($Items);

    • ベストアンサー
    • PHP
  • エクセル関数で一番多いの次に多いの…と数えたいです。

    日に何回もお世話になります。 今A1の列にアルファベットが入っています。それを一番多いのは何で何個。次に多いのは何で何個と数えたいです。 COUNTを使っても数しか数えてくれません。ご教授ください。    A1     b    b    b   c  c    a 1番 b 個数 3 2番 c 個数 2 3番 a 個数 1

  • EXCELVBA XML処理

    こんにちは、 下記のプログラムを作成したのですが、 (すいません、わかりづらいかもしれません。) <DIMENSION Name="E1">内の<HIERARCHY>タグ内にある <PARENT>と<CHILD>の値をセルに貼り付けようとしているのですが、 現在、下記二点で悩んでいまして、何か方法などありましたらお願い致します。 1:<DIMENSION Name="E1">処理のときに、セルにNAMEの値E1を出力  しているのですが、二回表示されてしまう。  (おそらく、<MEMBERS>と<HIERARCHY>と二つタグがあるので  そのせいかと思ったのですが、回避方法が変わりません。) 2:<DIMENSION Name="E1">だけでよいのだが、  <DIMENSION Name="Z1">まで処理を行っている  (<DIMENSION Name="E1">を抜けたという判断方法がわからず・・) VBAコード----------- Option Explicit Dim ia As Long Dim flg As Integer Private Sub CommandButton2_Click() Const cnsTITLE = "テキストファイル読み込み処理" Const cnsFILTER = "全てのファイル (*.*),*.*" Dim xlAPP As Application ' Applicationオブジェクト Dim strXMLFile As String Dim objDOM As MSXML2.DOMDocument Dim rtResult Set xlAPP = Application xlAPP.StatusBar = "読み込むファイル名を指定して下さい。" strXMLFile = xlAPP.GetOpenFilename(FileFilter:=cnsFILTER, _ Title:=cnsTITLE) If StrConv(strXMLFile, vbUpperCase) = "FALSE" Then Exit Sub Set objDOM = New MSXML2.DOMDocument rtResult = objDOM.Load(strXMLFile) If rtResult = True Then ia = 0 flg = 0 procDispDatas objDOM.childNodes Else MsgBox "読み込み失敗" End If Set objDOM = Nothing End Sub Sub procDispDatas(objNode) Dim obj For Each obj In objNode If (obj.parentNode.nodeName = "DIMENSION") Then '<DIMENSION >タグ内処理か判断 If (obj.parentNode.Attributes.getNamedItem("Name").nodeValue = "E1") Then '<DIMENSION Name="E1">タグ内処理か判断 ia = ia + 1 Cells(ia, 1).Value = _ obj.parentNode.Attributes.getNamedItem("Name").nodeValue & " : " flg = 1 End If ElseIf (flg = 1) Then If (obj.parentNode.nodeName = "HIERARCHY") Then '<HIERARCHY>タグ内処理か判断 flg = 2 End If ElseIf (flg = 2) Then If (obj.parentNode.nodeName = "NODE") Then '<NODE>タグ内処理か判断 flg = 3 End If ElseIf (flg = 3) Then Select Case obj.parentNode.nodeName Case "PARENT" '<PARENT>タグ内処理か判断 ia = ia + 1 Cells(ia, 1).Value = _ obj.parentNode.nodeName & " : " & _ obj.nodeValue Case "CHILD" '<CHILD>タグ内処理か判断 ia = ia + 1 Cells(ia, 1).Value = _ obj.parentNode.nodeName & " : " & _ obj.nodeValue Case Else End Select End If If obj.hasChildNodes Then procDispDatas obj.childNodes End If Next End Sub XMLファイル---------- <?xml version = "1.0" encoding="UTF-16" ?> <HSDATA> <DIMENSION Name="E1"> <MEMBERS> <MEMBER> <LABEL>[None]</LABEL> <AT Name="DefCurrency">[None]</AT> <DESCRIPTION Language="English">[None]</DESCRIPTION> </MEMBER> </MEMBERS> <HIERARCHY> <NODE> <PARENT>#root</PARENT> <CHILD>[None]</CHILD> </NODE> <NODE> <PARENT>#root</PARENT> <CHILD>MNG_CN</CHILD> </NODE> </HIERARCHY> </DIMENSION> <DIMENSION Name="Z1"> <HIERARCHY> <NODE> <PARENT>abc</PARENT> <CHILD>123</CHILD> </NODE> <NODE> <PARENT>def</PARENT> <CHILD>456</CHILD> </NODE> </HIERARCHY> </DIMENSION> </HSDATA>

専門家に質問してみよう