既存のXMLを別のXMLの要素として追加する方法
- JavaでDOMを使用して、既存のXMLを別のXMLの要素として追加する方法について解説します。
- 具体的には、既存のXMLファイルにおける親ノードに対して、別のXMLを追加する手順を説明します。
- この記事では、XMLの操作方法とDOMを利用したXMLの要素追加手法について詳しく紹介します。
- ベストアンサー
既存のXMLを別のXMLの要素として追加する方法
JavaでDOMを使用して、既に作成してあるXMLを別のXMLの要素として追加しようと思っているのですが、なかなか上手くいかないので投稿いたしました。 具体的に以下のような既存のXMLファイルがあると仮定して、 <?xml version="1.0" encoding="UTF-8"?> <a> <b>0</b> <c>1</c> <d>2</d> </a> 上記のXMLの親ノード(逆に言えば、このXMLの子ノードとして上記XMLを追加)にあたるXMLは以下のようになっています。 <?xml version="1.0" encoding="UTF-8"?> <A> </A> そして<A>と</A>の間に既存のXMLを追加して、 <?xml version="1.0" encoding="UTF-8"?> <A> <a> <b>0</b> <c>1</c> <d>2</d> </a> </A> のようにしたいと考えています。 よろしくお願いします。
- qpwowppq
- お礼率66% (4/6)
- Java
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
関連するQ&A
- 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
- XMLでデータ追加
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE LoginLIST SYSTEM "Login.dtd"> XMLでデータを追加したいとおもってます。 下記のようなXMLのデータが既にあります。 <LoginLIST> <Login> <UsrID>ko0001</UsrID> <Passwd>1597jk</Passwd> </Login> <Login> <UsrID>ko0012</UsrID> <Passwd>1545fg</Passwd> </Login> </LoginLIST> ここに、新しいデータ(ノード:Login)を 追加するようにしたいのですが、 そういったサンプルを扱ったページが ありましたら教えていただきたいです。 宜しくお願いします。
- ベストアンサー
- Java
- XMLとの連携でノードの長さを取り出す方法
PHP--------------------------------------------- $xpath = "/qq:album/img"; $xpath = mb_convert_encoding($xpath,"UTF-8","SJIS"); $x_array = $ctx->xpath_eval($xpath); $title_element = $x_array->nodeset[0]; $title = $title_element->get_attribute("title"); $title = mb_convert_encoding($title,"SJIS","UTF-8"); XML---------------------------------------------- <?xml version="1.0" encoding="EUC-JP"?> <qq:album xmlns:qq="www.phpdom.com"> <img title="ABC"> <img title="DEF"> <img title="GHI"> <img title="JKL"> </qq:album> こんにちは。 http://www.geocities.jp/xmlfirststep/dom/dom4.html のサイトを参考に、上のようなスクリプトを書きました。albumという名の親ノードの下にあるimgノードの要素titleを抜き出すものです。このimgノードをXMLで複数つくり、phpでその長さを自動で返してもらおうと思ったのですがそのやり方がわかりません。 色々なサイトを回りましたが、キーワード「length」で探してもそれらしき情報がまったく見つかりません。 どうすればノードの長さを返してもらえるのでしょうか?
- ベストアンサー
- PHP
- 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
- XMLでのAttributeを持ったNodeの追加方法
VB6にてcreateNodeを使ってXMLを作成しようとしています。 シンプルなXMLは作成できたのですがAttributeを持ったNodeの追加方法が分かりません。 下記のようなXMLファイルを作成しようとしています。 <?xml version="1.0" encoding="utf-8"?> <configuration> <userSettings> <setting name="Color_Unknown_On" serializeAs="String"> <value>True</value> </setting> </userSettings> </configuration> ご教授お願いいたします。
- ベストアンサー
- Visual Basic
- vbsでxmlの属性を追加したい
Vista以降の更新プログラム(msuファイル)を展開して出てくるXMLファイルに属性を追加して恒久的に適用出来るか試してみたところ、正常に適用でき、恒久化もされていました。 ちょっと本題から外れましたが、そこでバッチファイルとvbsを組み合わせてXMLに連続的にこの変更(属性追加)を加えたいのです。 そのような操作が出来る関数ってあるのでしょうか。 出来れば記述の例もご教授頂ければ嬉しいです。 以下にXMLのソースと変更したい箇所を書いておきます。 よろしくお願いします。 ※追加する前 <?xml version="1.0" encoding="utf-8"?> <unattend xmlns="urn:schemas-microsoft-com:unattend"> <servicing> <package action="install"> <assemblyIdentity (略)> <source location=(略)> </package> </servicing> </unattend> ※追加した後 <?xml version="1.0" encoding="utf-8"?> <unattend xmlns="urn:schemas-microsoft-com:unattend"> <servicing> <package action="install" permanence="permanent"> ←ここに要素を追加 <assemblyIdentity (略)> <source location=(略)> </package> </servicing> </unattend>
- ベストアンサー
- XML
- 要素の内容にxmlを入れたい
次のようなxmlを作成しました。 <?xml version="1.0" encoding="UTF-8"?> <tns:StateChange xsi:schemaLocation="http://sample.com/Change.xsd" xmlns:tns="http://sample.com/XSDDefinition" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ServiceName>test</ServiceName> <wsdl></wsdl> </tns:StateChange> wsdl要素の内容として <?xml version="1.0" encoding="utf-8\"?><wsdl:definitions xmlns:s="http://www.w3.org/2001/XMLSchema".... といったいわゆるWSDLを文字列として指定したいと考えて、指定するとvalidate時にエラーになってしまいます。 xmlを要素の内容にしたい場合、どのようにすればいいのでしょうか?
- ベストアンサー
- XML
- ★C#のXML読み込みについて
以下のXMLをC#(VS2005)で読み込みをしたいのですが、 "DB2", "6"の値を取得するにはどうしたらよいでしょうか? 教えてください。 <?xml version="1.0" encoding="utf-8" standalone="yes"?> <Config> <ConfigKeyValuePair Key="DBType">DB2</ConfigKeyValuePair> <ConfigKeyValuePair Key="Version">6</ConfigKeyValuePair> </Config>
- 締切済み
- C・C++・C#
- xmlの読込みについて
<?xml version="1.0" encoding="utf-8" ?> <root> <学科 name="普通"> <number>001</number> <人名>A君</人名> <number>002</number> <人名>B君</人名> <number>003</number> <人名>C君</人名> <number>004</number> <人名>D君</人名> </学科> <学科 name="経理"> <number>001</number> <人名>E君</人名> </学科> <学科 name="情報"> <number>001</number> <人名>F君</人名> </学科> </root> 上記のようなtest.xmlファイルがあり、普通科のD君のnumberをtextboxに出力したいのですが、どういった処理を行えばよろしいでしょうか?
- ベストアンサー
- Visual Basic
お礼
非常にわかりやすいプログラムを作っていただきありがとうございます。 importNodeメソッドを使い、xmldom1オブジェクトにxmldom2の子ノードをインポートした後、appendChildメソッドでインポートしたノードを追加したと理解しました。 おかげで無事に問題を解決することが出来ました。