• 締切済み

XMLの操作

↓のようなXMLファイルがあります。 <start> <Group id="0001"> <Info id="01010101" name="name1" unit="Unit1"> <data max="60" min="50" average="55" /> <data max="100" min="50" average="75" /> </Info> <Info id="01010102" name="name2" unit="Unit1"> <data max="50" min="40" average="45" /> </Info> </Group> <Group id="0002"> <Info id="01010101" name="name1" unit="Unit1"> <data max="60" min="50" average="55" /> </Info> <Info id="01010102" name="name2" unit="Unit1"> <data unit="00001" max="50" min="40" average="45" /> </Info> </Group> </start> これをJavaで Group id="0001"を指定すると↓のデータを取得 <Info id="01010101" name="name1" unit="Unit1"> <data max="60" min="50" average="55" /> <data max="100" min="50" average="75" /> </Info> <Info id="01010102" name="name2" unit="Unit1"> <data unit= max="50" min="40" average="45" /> </Info> Info id="01010101"を指定すると↓のデータを取得 <data max="60" min="50" average="55" /> <data max="100" min="50" average="75" /> といったことはできるのでしょうか? 色々とやってみたのですが、どうもうまく行きません。 なにかヒントになるようなことを教えていただけないでしょうか?

  • Java
  • 回答数1
  • ありがとう数1

みんなの回答

  • covachan
  • ベストアンサー率38% (46/120)
回答No.1

こういった構造体を操作するためにXMLは設計されています。それが出来ないのであれば意味はないのですが、どうやって出来なかったのでしょうか? ちなみに要望的にDOMのような気がしますが、 jakartaのDigesterあたりをググって見れば一番使い勝手がよい方法が見つかると思います。 まあ、ちょっと面倒ですが・・・(^^

関連するQ&A

  • xmlを読み込んで、データをリストに・・・

    Javaでxmlファイルを読み込んで、リストに入れたいのです。xmlファイルには <info id="hogehoge" name="sample" </info> <info id="hogehogehoge" name="samplesample" </info> といったようにrootがないxmlファイルになっており、idをリストに入れたいのです。rootタグがないと難しいでしょうか? どなたかご教授願います!

    • ベストアンサー
    • Java
  • PythonでXMLをcsvに変換したいです。

    pythonで、特定のファルダにXMLファイルが追加されるたびにCSVファイルを新しく作成してそこに書き込んでいくという事がしたいのですが、なかなかうまくいかず困っています。 下記のようなXMLなのですが、どうしたら良いのでしょうか? <?xml version="1.0" encoding="UTF-8"?> <file format="current_readings" version="1.25" name="test.xml" author="verxxx x.xx"> <base> <serial>563C10SS</serial> <model>XXX-XXXX</model> <name>ABC1</name> <time_diff>540</time_diff> <std_bias>0</std_bias> <dst_bias>0</dst_bias> <time_zone>(UTC+09:00) 大阪、札幌、東京</time_zone> <lan> <input>0</input> <output>0</output> </lan> </base> <group> <num>0</num> <name>Group1</name> <remote> <serial>AAAAAAA1</serial> <model>XXX-NNN</model> <num>1</num> <name>Unit01</name> <rssi repeater="0">5</rssi> <ch> <num>1</num> <scale_expr></scale_expr> <name></name> <current> <unix_time>1538008469</unix_time> <time_str>2018-09-27 09:34:29</time_str> <value valid="true">25.0</value> <unit>C</unit> <batt>5</batt> </current> <record> <type>13</type> <unix_time>1538007269</unix_time> <data_id>884</data_id> <interval>300</interval> <count>5</count> <data> 2a0f0a605f560== </data> </record> </ch> <ch> <num>2</num> <scale_expr></scale_expr> <name></name> <current> <unix_time>1538008469</unix_time> <time_str>2018-09-27 09:34:29</time_str> <value valid="true">61</value> <unit>%</unit> <batt>5</batt> </current> <record> <type>208</type> <unix_time>1538007269</unix_time> <data_id>884</data_id> <interval>300</interval> <count>5</count> <data> das54f0565== </data> </record> </ch> </remote> <remote> <serial>BBBBBBB1</serial> <model>XXX-NNN</model> <num>2</num> <name>Unit02</name> <rssi repeater="0">3</rssi> <ch> <num>1</num> <scale_expr></scale_expr> <name></name> <current> <unix_time>1538008192</unix_time> <time_str>2018-09-27 09:29:52</time_str> <value valid="true">26.0</value> <unit>C</unit> <batt>5</batt> </current> <record> <type>13</type> <unix_time>1538006992</unix_time> <data_id>883</data_id> <interval>300</interval> <count>5</count> <data> 54829652hughA== </data> </record> </ch> <ch> <num>2</num> <scale_expr></scale_expr> <name></name> <current> <unix_time>1538008192</unix_time> <time_str>2018-09-27 09:29:52</time_str> <value valid="true">58</value> <unit>%</unit> <batt>5</batt> </current> <record> <type>208</type> <unix_time>1538006992</unix_time> <data_id>883</data_id> <interval>300</interval> <count>5</count> <data> 481762opjuhgft== </data> </record> </ch> </remote> <remote> <serial>AAABB2</serial> <model>XXX-NNN</model> <num>3</num> <name>Unit03</name> <rssi repeater="0">3</rssi> <ch> <num>1</num> <scale_expr></scale_expr> <name></name> <current> <unix_time>1538008214</unix_time> <time_str>2018-09-27 09:30:14</time_str> <value valid="true">26.5</value> <unit>C</unit> <batt>5</batt> </current> <record> <type>13</type> <unix_time>1538007014</unix_time> <data_id>883</data_id> <interval>300</interval> <count>5</count> <data> 7wTvBPEE8gTxBA== </data> </record> </ch> <ch> <num>2</num> <scale_expr></scale_expr> <name></name> <current> <unix_time>1538008214</unix_time> <time_str>2018-09-27 09:30:14</time_str> <value valid="true">55</value> <unit>%</unit> <batt>5</batt> </current> <record> <type>208</type> <unix_time>1538007014</unix_time> <data_id>883</data_id> <interval>300</interval> <count>5</count> <data> f6a72f5aaa== </data> </record> </ch> </remote> </group> </file>

  • jQueryでXMLを操作

    jQueryでXMLを操作 最近jQueryを勉強しはじめました。 jQueryでXMLを読み込んで、item val="new"を含んだデータのみ<ul></ul>内に表示したいのですが うまくいきません。 ご教授願います。 また、こういったjQueryの使い方に関する、お勧めの本やページ等ございましたら 教えてください。宜しくお願い致します。 -------------------------XML Data------------------------- <data> <item val="new"> <link>01.html</link> <name>ほげ田 ほげ太</name > <photo>dummy.jpg</photo> </item> <item val="new"> <link>02.html</link> <name>ほげ田 ほげ子</name > <photo>dummy.jpg</photo> </item> <item val="new"> <link>03.html</link> <name>ほげ山 ほげ太</name > <photo>dummy.jpg</photo> </item> <item> <link>04.html</link> <name>ほげ山 ほげ子</name > <photo>dummy.jpg</photo> </item> </data> -------------------------JavaScript------------------------- $(function(){ $.ajax({ url: 'doctors/data.xml', dataType: 'xml', timeout: 1000, error: function(){ alert("xmlファイルの読み込みに失敗しました"); }, success : function(data){ $("item",data).each(function(){ if($("item",this).attr("val") == "new"){ $(".column").append('<li><a href="'+$("link",this).text()+'"><img src="image/'+$("photo",this).text()+'" alt="'+$("name",this).text()+'" title="'+$("name",this).text()+'"></a></li>'); } }) } }) $("li.noJavaScript").remove(); }) -------------------------HTML------------------------- <div id="wrapper"> <ul class="column"> <li class="noJavaScript">javaScriptを有効にしてください。</li> </ul> </div>

  • XMLファイルの読み方

    以下の様なXMLファイルがあるとします。 "groupノード(?)のアトリビュートであるgrpIDとnumStdGrpの値を取得したいです。 JavaでDOMパーサーを使うことに限定します。 <?xml version="1.0" encoding="UTF-8"?> <dataHeader <numStudent>150</numStudent> <dataMain <band name="B1"> <group grpID="1" numStdGrp="15"/> </band> <band name="B2"> <group grpID="2" numStdGrp="10"/> </band> </dataMain> </dataHeader> 自分では試して見たのは以下まで。 File fXmlFile = new File("C:\XMLファイル名"); DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); Document doc = dBuilder.parse(fXmlFile); doc.getDocumentElement().normalize(); (1)numStudentとdataMainノードまでは簡単: 例) NodeList nListDM = doc.getElementsByTagName("dataMain"); 上記からnListDM.item(0)してノード取得できて、getNodeName()で名前表示する。 (2)bandノード(?)もgetElementsByTagNameで取れます。 NodeList nListBand = doc.getElementsByTagName("band"); このノードリストの長さは2です。それぞれ、アトリビュート「name」の値(B1, B2)は以下の様にして取れます。 Node nNodeBand = nListBand.item(0); Element bElement = (Element) nNodeBand; して、bElement.getAttribute("name")。 問題はこの以降。 初めに書きましたように、 groupノード(?)のアトリビュートであるgrpIDとnumStdGrpの値どうやって取得するのでしょうか? getElementsByTagName(group)はだめです。どのbandのgroupか、区別できないので。 Java+XMLに詳しい方、教えてください。 よろしくお願いします。

    • ベストアンサー
    • Java
  • 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
  • web.xmlの書き方

    web.xmlの書き方 質問させてください webcontent\day5\rsMeta.jspというファイルにブラウザからアクセスしたいのですが、エラーが出ます。 web.xmlの書き方が間違っているのですが、どのように書けばよいでしょうか? 現状のweb.xmlを以下に記載します。 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>Jijyodoryoku</display-name> <servlet> <servlet-name>rsMeta</servlet-name> <jsp-file>/day5/rsMeta.jsp</jsp-file> </servlet> <servlet-mapping> <servlet-name>rsMeta</servlet-name> <url-pattern>/rsMeta</url-pattern> </servlet-mapping> </web-app>

    • ベストアンサー
    • Java
  • PHP5でのXML保存

    PHP5でsimplexmlを用いて、既にあるXMLファイルを読み込み、データの追加をしたいと考えています。 XMLファイルは以下のような形式です。 <xml> <id ="1"></id> <data>1221</data> <data>1765</data> <id ="2"></id> <data>1221</data> </xml> またデータを追加する際に、id=2の中に追加するなどを指定したいと考えています。 よろしくお願いします。

    • 締切済み
    • PHP
  • XML初心者です。

    いつもお世話になっております。 下記のPHPを解析中なのですが、さっぱり分かりません。 「何をしているか(どんな動きをしているか)」をどなたか解説していただけませんでしょうか。 よろしくお願い致します。 ----------------------------------- <?php class EditableGrid { (略) public function addColumn(・・・(略)・・・) { $this->columns[$name] = array(・・・(略)・・・); } private function _getRowField($row, $field) { return is_array($row) ? (isset($row[$field]) ? $row[$field] : '') : (isset($row->$field) ? $row->$field : ''); } public function getXML((・・・(略)・・・)); { $xml = '<?xml version="1.0" encoding="'. $this->encoding . '" ?>'; $xml.= "<table><metadata>\n"; foreach ($this->columns as $name => $info) { $label = self::escapeXML($info['label']); $xml.= "<column name='$name' label='$label' datatype='{$info['type']}'". ($info['bar'] ? "" : " bar='false'") . " editable='". ($info['editable'] ? "true" : "false") . "'>\n"; if (is_array($info['values'])) { $xml.= "<values>\n"; foreach ($info['values'] as $key => $value) $xml.= "<value value='{$key}'><![CDATA[{$value}]]></value>\n"; $xml.= "</values>\n"; } $xml.= "</column>\n"; } $xml.= "</metadata><data>\n"; $fetchMethod = method_exists($rows, 'fetch') ? 'fetch' : (method_exists($rows, 'fetch_assoc') ? 'fetch_assoc' : NULL); if (!$fetchMethod) foreach ($rows as $row) $xml.= $this->getRowXML($row, $customRowAttributes, $encodeCustomAttributes); else while ($row = call_user_func(array($rows, $fetchMethod))) $xml.= $this->getRowXML($row, $customRowAttributes, $encodeCustomAttributes); $xml.= "</data></table>\n"; return $xml; } ----------以下まだ続くのですが省略します-------- private function getRowXML  ・  ・ (略)  ・  ・ public function renderXML  ・  ・ (略)  ・  ・ } 以上

    • ベストアンサー
    • PHP
  • C# XMLデータ 更新について

    C# XMLデータ 更新について <?xml version="1.0" encoding="utf-8"?> <Data> <p id="1" name="Aさん age="20" seibetu="男"></p>  <p id="2" name="Bさん" age="30" seibetu="女"></p> </Data> C#でデータ更新ついて ID 2の所に name(名前)とage(年齢)を置換したいですが、 置換前 ID 2 名前 Bさん 年齢 30 置換後 ID 2 名前 Cさん 年齢 25 したいですが、どうしたら出来ますか? 又、ID 2にあるデータを削除したい場合、教えて戴けませんか? すみませんが、どなたか教えてお願いいたします。

  • ServletからXMLを読み込む方法

    こんにちわ。 JSPからGETで受け取ったデータと、ローカルXMLファイルのデータの画面表示をサーブレットを使って行いたいと思っています。 このとき、XMLファイルからのデータ取得方法が分かりません。 普通のJavaであればDOMとしてXMLを操作したことがあるのですが、サーブレットの場合、違ってくるのでしょうか。 簡単な例等を教えていただけると嬉しいです。 お手数ですが、お分かりになる方、どうぞご教授くださいませ。

専門家に質問してみよう