XMLタグ情報取得に関するシステムの構築方法とは?

このQ&Aのポイント
  • PHPにxmlファイルのタグ情報を取得するシステムを構築するための方法について教えてください。
  • システムはDOM方式を利用して実装され、異なるシステム間でも同じ使用用途のデータを取得できるように設計されています。
  • 環境はXP、PHP5、Apache2.0です。
回答を見る
  • ベストアンサー

XMLタグ情報取得

PHPにxmlファイルのタグ情報を利用するシステムを構築したいのですが、調べてもよく解らなかったため質問させて頂きます。 PHPは勉強経験があるため解るのですがXMLはまったくの初心者です。 システムは以下の流れです。 システムA(PHP) <?php  $i;  if($iがシステムBで使用されているか確認){   使用されている場合$iで処理  }else{   使用されていない場合xmlファイルからタグ情報取得   for($iの親タグ<B>を取得){    if(<$i><$j><$k>のどれかがシステムBで使用されていないか?){     $jが使用されていた場合、システムAの$iと、システムBの$jは同じ使用用途のデータと判断し処理    }   }  } xmlファイル <?xml version="1.0" encoding="EUC-JP"?> <A> <B> <$i></$i><$j></$j><$k></$k> </B> </A> このようなシステムを構築したいのでご教授お願いします。 違うシステム同士でデータを利用する際、同じ使用用途でもシステムによって名称が異なる場合にも対応できるシステムを課題としています。 また、DOM方式を利用した方法だと助かります。 環境はXP、PHP5、Apache2.0です

  • PHP
  • 回答数1
  • ありがとう数4

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

  • ベストアンサー
noname#243182
noname#243182
回答No.1

それでしたら、正にこれが打って付けです。

参考URL:
http://www.php.net/manual/ja/book.dom.php
vanomega
質問者

補足

迅速な対応ありがとう御座います。 親タグ名を取得する命令が見当たらないのですが自分の見落としてしょうか。

関連するQ&A

  • XMLのタグで<o>は何をするタグでしょうか?

    XMLのタグで<o>は何をするタグでしょうか? <u>(アンダーライン),<i>(イタリック),<b>(ボールド)とかはわかるのですが、 ひょっとしてオーバーラインかなとも思うのですが、NETで探しても、出てきません。 出来ましたら参考URLも教えていただけるとありがたいです。

    • ベストアンサー
    • XML
  • VB2005でDBから取得したデータを指定されたXMLデータへ変換する方法について

    VB2005の初心者です。 Aシステムの開発(VB2005)で、Bシステムとの通信部分の開発をしています。 Bシステムとの通信はTCP/IP通信にて、XMLデータでやりとりをします。 XMLデータは、タグなど形式が決まっています。 単純に、適当なXMLデータを通信でやりとりすることはできたのですが、 AシステムでDB(SQLServer)から取得したデータを、形式に沿ったタグを使用したXMLデータに変換してから通信したいのですが、その変換方法が分りません。 DBのデータをXML形式に変換すると、フィールド名のタグでできると思うのですが、そうではなく、指定したタグを使用してXMLデータを作成するにはどうすれば良いのでしょうか。 タグを指定、もしくは変換する方法などはあるのでしょうか。 何かヒントでも良いので、たくさんの方の知恵をお借りできれば幸いです。 よろしくお願い致します。

  • PHP ”XML_unserialize”でXMLを配列に変換したのですが・・・

    XMLファイルを配列としてとってこれる XML_unserializeというライブラリを使用して XMLファイルに含まれるデータをとってPHPで利用することが できたのですが、ここで一つ大きな問題が発生しました。 XML_unserializeをつかうと <XMLTAG>  取り出したいデータ </XMLTAG>      ↓ array(  [XMLTAG] = 取り出したいデータ ) と、たしかに取り出したいデータを配列に変換することができます。 しかし、取り出したいデータの中にタグが含まれていた場合 例えば <XMLTAG>  <div>取り出したいデータ</div> </XMLTAG> とかになっていると <div>もXMLと判断されてしまって 必要なデータがうまくとってこれないのです。 正規表現でエスケープさせるにしても数が膨大ですし、 XMLタグ名に実際にHTMLで使われている タグ名が使われているとも限りません。 どうすれば、 ”XMLの中に入っているHTML等のタグを含むデータ”をうまくとってくることが できるのでしょうか?

    • ベストアンサー
    • PHP
  • 2つのxmlファイルを利用したリレーションシップ(?)に関して

    2つのxmlファイルを使用し、リレーションシップ(?)を作成してDataGridViewに表示させようとしているのですがうまくいきません。ご教授お願いいたします。 xmlファイル1: <タグ1> <タグ2 属性21="a1" 属性22="a2"></タグ2> <タグ2 属性21="b1" 属性22="b2"></タグ2> <タグ2 属性21="c1" 属性22="c2"></タグ2> </タグ1> xmlファイル2: <タグ1> <タグ2 属性21="a1" 属性22="d2"></タグ2> <タグ2 属性21="b1" 属性22="e2"></タグ2> <タグ2 属性21="c1" 属性22="f2"></タグ2> </タグ1> 表示させたい内容: | d2 | a2 | | e2 | b2 | | f2 | c2 |

  • jQueryでxmlの異なるタグ要素を取得したい。

    jQueryを最近勉強したての者です。 詳しい方、どうか教えて下さい。 HTMLにxmlのデータを読み込ませようとしています。 概略をお話しすると、 htmlファイルによって、xmlの別々の要素を取得したいのです。 やりたいメソッドは同じです。 別々の要素の中のデータによって、imgの表示/非表示を切り替えたいのです。 問題は、対象となるhtmlファイルが複数あり そのhtmlファイルによって、参照するxmlのタグが異なる事なんです。 xmlは、以下のように<shopdata>をルートノードとし、以下のような感じです。 --------------------- <?xml version="1.0" encoding="utf-8"?> <shopdata> <item> <name1>0</name1> <name2>1</name2> <name3>0</name3> </item> </shopdata> --------------------- <name*>~</name*> の中のデータは、0もしくは1なのですが 0の時はimgを表示 1の時はimgを非表示させようと考えています。 ただ<name1><name2><name3> とタグ名がバラバラなんです。 ※おしりの数字が違うだけで、規則的ではあります。 ちなみにhtmlは複数あって  a.htmlの時は→xmlの<name1>を参照  b.htmlの時は→xmlの<name2>を参照  c.htmlの時は→xmlの<name3>を参照 という感じです。 ※htmlファイル名は特に規則的ではなく、いろいろなファイル名がついています。。。 最初、考えたのは、 htmlのどこかに、id="1"と入れて、idが1の時は、<name1>の要素を取得し、 htmlのどこかに、id="2"と入れて、idが2の時は、<name2>の要素を取得し… っていうことを考えたのですが、それもどのように書いたら良いのかが分からないんです。 そもそも、そういった事は可能なのでしょうか? ちなみのhtmlのbodyタグ自体がテンプレートでできているので、 idをどこかにふるとしたら、head内とかになるのしょうか? それぞれ、ボタンの表示は、 if文を使って、show(),hide()メソッドを使うとは思うのですが… 詳しくコードを教えていただけたら、助かります。 どうか、宜しくお願いいたします。

    • ベストアンサー
    • AJAX
  • XmlをDetaSetに読み込んだ場合の属性値所得について

    初めて書き込みさせていただきます。 ただいまxmlをDetaSetに読み込ませ、そこから指定した属性値を所得し DataGridViewに表示しようとしているのですが思うようにいかず困っています。できればご享受お願いいたします。 以下、使用するxmlのイメージです。 <?xml version="1.0" encoding="Shift_JIS" ?> <タグ1> <タグ2 属性21="a1" 属性22="a2"> <タグ3 属性31="b1" 属性32="b2"></タグ3> <タグ4 属性41="c1" 属性42="c2"></タグ4> <タグ4 属性41="d1" 属性42="d2"></タグ4> </タグ2> <タグ2 属性21="e1" 属性22="e2"> <タグ3 属性31="f1" 属性32="f2"></タグ3> ○ <タグ4 属性41="g1" 属性42="g2"></タグ4> ○ <タグ4 属性41="h1" 属性42="h2"></タグ4> </タグ2> <タグ2 属性21="i1" 属性22="i2"> <タグ3 属性31="j1" 属性32="j2"></タグ3> <タグ4 属性41="k1" 属性42="k2"></タグ4> <タグ4 属性41="l1" 属性42="l2"></タグ4> </タグ2> </タグ1> 希望する結果: g1 g2 h1 h2 (xmlで○をつけた所の属性値のみをDataGridViewに表示) 一応現在のコード: Dim dset As New DataSet dset.ReadXml("./test.xml") DataGridView.DataSource = dset.Tables(3).DefaultView (この場合、タグ4の全ての属性値 c1~l2 が表示されてしまいます) なお環境はvb2005を使用しています。

  • xml取得値を文字列と比較

    いつもお世話になっております。 オブジェクト型(object)と文字列(string)の比較がうまくいかずに 困っている次第です。 ご教授願えないでしょうか。 一度質問後閉じたのですが、うまくいかず再度質問させて下さい。 [sample.xml} <item> <data0> <cd>00001</cd> <nm>yahoo</nm> </data0> <data1> <cd>00002</cd> <nm>google</nm> </data1> <data2> <cd>00003</cd> <nm>google_1</nm> </data2> <data3> <cd>00004</cd> <nm>google_2</nm> </data3> [php] $cd = '00003' $filename = sample.xml $j = 0; if($xml = simplexml_load_file($file_name)){ $cnt = count($xml); for($i=0; $i<$cnt; $i++){ $data = 'data' .$i; if($cd !== $xml->xpath($data .'/cd')){ $data[$j++] = $xml->$data->nm; } } } 上記とした際、$nm != $xml->$data->nm が有効な比較となりません。 php の cdのみを配列に書き出したいです。 $xml->xpath($data .'/cd')でDisplayしてみると。 arrayとしか表記されません。 色々調べたりしたのですが、 お手数ですが、教えて下さい。

    • ベストアンサー
    • PHP
  • PHPでXMLを扱いたいのですが

    PHPでXMLを扱いたいのですが、わからないところがあります。 <XML>  <T>   <A>    <a>    </a>    <b>    </b>    <c>     <c1></c1>     <c2></c2>    </c>   </A>   <A>    <a>    </a>    <b>    </b>    <c>     <c1></c1>     <c2></c2>    </c>   </A>   <A> 以下くりかし・・・  </T> </XML> このような感じのXMLがある時に、<a>,<b>等のタグの中身はちゃんと一つめの<A>、二つめの<A>、のように、 繰り返しある全てを取り出すことが来るのですが、 <c1>のようにもう一つ奥になっているものが取り出せません。 //以下成功するソースです。 foreach(XML->T->A as $value){ $data[]=$value->a; } for($i=0,$n=count($data);$i<$n;$i++){ $file=$data[$i]; } echo $file; これだとうまく動作しますが、 //以下失敗するソースです。 foreach(XML->T->A->c as $value){ $data[]=$value->c1; } for($i=0,$n=count($data);$i<$n;$i++){ $file=$data[$i]; } echo $file; このように<c1>を取り出そうとすると、繰り返しある<c1>の内の初めの一つしか取りだせません。 もう何回も色々と変えてやっているのですが、どれもうまくいきませんでした。 どうすればいいのでしょうか。分かる方教えて下さい、お願いします。

    • 締切済み
    • PHP
  • XMLのスタイルシートで単独タグを発見したい

    こんにちは XMLファイルをブラウザで見やすく表示するためにスタイルシートを使っているのですが、XMLファイル中に登場する単独タグを見つけて、その部分で改行するスタイルシートの書き方がわかりません。 XML中に <LineBreak />という単独タグが登場した場合に HTML出力として <br />を入れたいのです。 スタイルシートはどのようにしたらよいでしょうか?

    • ベストアンサー
    • XML
  • PHPによるXML作成について

    PHPによるXML作成について いつもお世話になっております。 XMLファイルの署名の作成を行っております。 A.xmlというXMLファイルに後で作成した部分をまとめて追記したいと思っています。 「まとめて」というのは、後で追記する部分をプログラム上で一つの変数に格納して、その変数に格納した内容(複数行)を指定した場所に書き込むということです。 XMLの操作として、PHPにこういう機能が無いのであればファイル操作としてでもかまいません。 何かうまく行く方法はありませんでしょうか? よろしくお願いいたします。 実際の例は以下のような感じです。 【A.xmlの例】 <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet href="00001.xsl" type="text/xsl"?> <DataRoot> <A>999000000000000009</A> <B>0001</B> <STYLESHEET>999000000000000009.xsl</STYLESHEET> <C ID="CCCCCC"> <D> <E> <E1>100495</E1> <E2>4950000020161F01</E2> </E> <F>ファイル名称</F> </D> </C> ******** ここの一括で作成した部分を追記したい ******** </DataRoot> 【追記情報 この部分を変数に格納しています。】 <G xmlns = "http://www.xxxxxxxxx" id = "2009010101"> <Hinfo> <I> <I1></I1> <I2></I2> </I> </Hinfo> </G> 【結果のA.xml】 <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet href="00001.xsl" type="text/xsl"?> <DataRoot> <A>999000000000000009</A> <B>0001</B> <STYLESHEET>999000000000000009.xsl</STYLESHEET> <C ID="CCCCCC"> <D> <E> <E1>100495</E1> <E2>4950000020161F01</E2> </E> <F>ファイル名称</F> </D> </C> <G xmlns = "http://www.xxxxxxxxx" id = "2009010101"> <Hinfo> <I> <I1></I1> <I2></I2> </I> </Hinfo> </G> </DataRoot>

    • ベストアンサー
    • PHP

専門家に質問してみよう