• 締切済み

xml中の特殊文字処理について

phpを使ってxmlを書き出すプログラムを書いたのですがどうしても解決できなくて困っています。具体的な内容は以下のとおりです。 $url = $root->appendChild($dom->createElement('url')); $text = $dom->createTextNode($T_url); $text = $url->appendChild($text); やりたいことは 変数$T_url に 「&」(本来は小文字です。)が含まれた場合そのままxmlに書いて表示させたいですが書き出したxmlをみると「&」という文字列に置き換えて書き出されるのです。 変数$T_urlの内容そのまま書き出したいですがいい方法があればご教授ください。

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

みんなの回答

回答No.1

おそらく不可能。 一応回避策を考えられるかもしれないので, どのような局面で使いたいのか教えてもらえるだろうか?

関連するQ&A

  • xmlファイルが生成されない

    <?php //DomDocumentを呼び出す $dom = new DomDocument('1.0','UTF-8'); //要素ノード[document]を追加 $document = $dom->appendChild($dom->createElement('document')); //新しい要素をdocumentの子要素として挿入する $document->appendChild($dom->createElement('name','名前です')); $document->appendChild($dom->createElement('text','テキストです。')); //字下げや空白を考慮してきれいに整形した出力を行う $dom->formatOutput = true; //同階層にtest.xmlとして保存 $dom->save('test.xml'); //出力 echo $dom->saveXML(); ?> のように、同じディレクトリ内にXMLファイルを生成するphpプログラムを作成してみたのですが、 ブラウザからこのPHPファイルにアクセスしてもXMLファイルが作られません。どうすれば良いのでしょうか。 なにかphp,apache等の設定をしてないからでしょうか。 よろしくお願いします。

    • 締切済み
    • PHP
  • XML DOMについて

    JavaScriptでDOMを使用して、xmlhttp.sendで指定のPHPファイルに送信しましたが、 PHP側で値を取得できません。 (PHP Ver.5.3.0) 以下、JavaScript var UserID="abc"; var Password="abc"; var xmlDoc = new ActiveXObject("Microsoft.XMLDom"); xmlDoc.appendChild(xmlDoc.createProcessingInstruction("xml","version=\"1.0\"")); var root = xmlDoc.createElement("xDoc"); xmlDoc.documentElement=root; var node_Item = xmlDoc.createElement("Command"); root.appendChild(node_Item); var node_UserID = xmlDoc.createElement("UserID"); node_UserID.appendChild(xmlDoc.createTextNode(UserID)), node_Item.appendChild(node_UserID); var node_Password = xmlDoc.createElement("Password"); node_Password.appendChild(xmlDoc.createTextNode(MDString(Password))), node_Item.appendChild(node_Password); var node_Sufix = xmlDoc.createElement("Sufix"); node_Sufix.appendChild(xmlDoc.createTextNode(Sufix)), node_Item.appendChild(node_Sufix); var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); xmlhttp.open("post",topURL("main/Log.php"),false); xmlhttp.send(xmlDoc); 以下、Log.php <?php session_start(); $DEBUG_MODE=false; $xmlLogQ=$_SERVER['DOCUMENT_ROOT']."/test/temp/Request.xml"; $xml = new DOMDocument(); $xml->async=false; if (!$DEBUG_MODE) { if ($XML_LOG) { $xml->save($xmlLogQ); } } else { if ($XML_LOG) { $xml->load($xmlLogQ); } } $doc=$xml->documentElement; if ($xml->parseError.errorCode==0) { $xml = $node=$doc->selectSingleNode("Command/UserID"); if (!($node==null)) { $UserID=$node->text; $node=null; } $node=$doc->selectSingleNode("Command/Sufix"); if (!($node==null)) { $Sufix=$node->text; $node=null; } $node=$doc->selectSingleNode("Command/Password"); if (!($node==null)) { $Password=$node->text; $node=null; } } ?> 保存したXML上、<?xml version="1.0"?>以降書き込みできてません。 どの部分がおかしいか不明の為、申し訳ないですがご教授お願いします。

    • ベストアンサー
    • PHP
  • フォームからPOSTされた値をXMLへ書き込むプログラムなのですが、「

    フォームからPOSTされた値をXMLへ書き込むプログラムなのですが、「あ」を入力するとなにも書き込まれません。 「あ」以外は正常に書き込めるようです。 1日調べてみたのですが、どうしてもわかりません。 教えていただけないでしょうか。 情報が足りないようでしたら出させていただきますのでどうかよろしくお願いします。 $dom = new DomDocument('1.0','utf-8'); $dom->load($FilePath); $data = $dom->documentElement->parentNode->firstChild->appendChild($dom->createElement('data')); $testnode = $data->appendChild($dom->createElement('test')); $testtxt = mb_convert_encoding($_POST['test'],'utf-8','sjis'); $testnode->appendChild($dom->createTextNode($testtxt)); 環境 Windows2008サーバ php5.3.2 IIS7.0

    • ベストアンサー
    • PHP
  • xmlにファイル出力

    サーバー内dirにある画像ファイルを自動取得してxmlに出力しています。ソース下記。 <?php $doc = new domDocument('1.0'); $doc->formatOutput = true; $root = $doc->createElement('item'); $root = $doc->appendChild($root); $files = glob( '*.jpg'); foreach ($files as $file) { $img = $root->appendChild($doc->createElement('image')); $img->appendChild( $doc->createtextNode($file)); } $doc->save("123.xml"); ?> 実行結果↓↓↓↓ <?xml version="1.0"?> <item> <image>37.jpg</image> <image>43.jpg</image> <image>45.jpg</image> </item> 上記の実行結果を下記の様にしたいのですが?    ↓↓↓↓ <photo url="http://demo/photos/37.jpg" /> <photo url="http://demo/photos/43.jpg" /> <photo url="http://demo/photos/45.jpg" /> よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • カウントアップ

    xmlの勉強中にわからないことがでてきたので質問します xmlを使用しての掲示板の作成中なのですが 以下のようなソースを記述しました。 //カウントアップ処理 Count count = new Count(); //ノードを作成し、文字列を代入 contribute.setAttribute("no", "1"); Element titlenode= document.createElement("title"); contribute.appendChild(titlenode); titlenode.appendChild(document.createTextNode(title)); Element namenode= document.createElement("name"); contribute.appendChild(namenode); namenode.appendChild(document.createTextNode(name)); Element mailnode= document.createElement("mail"); contribute.appendChild(mailnode); mailnode.appendChild(document.createTextNode(mail)); Element hpnode= document.createElement("hp"); contribute.appendChild(hpnode); hpnode.appendChild(document.createTextNode(hp)); Element urlnode= document.createElement("url"); contribute.appendChild(urlnode); urlnode.appendChild(document.createTextNode(url)); Element textnode= document.createElement("text"); contribute.appendChild(textnode); textnode.appendChild(document.createTextNode(text)); contribute.setAttribute("no", "1"); この行の"1"の部分を1~10などのようにカウントアップさせたいのですが ネットなどで調べてもわかりません。 条件として、Countという別のクラスを作成しそちらでカウントアップしたものを上記ソースで読み込むという処理がしたいのです。 初歩的な質問で情けないのですが、よろしくお願いします。

    • 締切済み
    • XML
  • JAXPでDOMを保存する際、'&'を'&amp;'に展開したくない

    当方JAXPでXMLを扱っています。 今悩んでいることなのですが、DOMオブジェクトを保存しようとすると、実態参照をつくることができません。 何かよい方法はありませんか? また、実態参照について、私のほうに根本的な間違いや知らなければならないことがあるのでしょうか。 よろしくお願いします。 ----------サンプルソース------------ DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document document = builder.newDocument(); Element root = document.createElement("root"); // 実態参照を挿入 root.appendChild(document.createTextNode("&nbsp;")); document.appendChild(root); // DOMの状態では挿入したものがそのまま参照できる System.out.println("on dom : " + root.getTextContent()); // 保存 Transformer transformer = TransformerFactory.newInstance().newTransformer(); transformer.transform(new DOMSource(document), new StreamResult(System.out)); --------------結果----------------- on dom : &nbsp; <?xml version="1.0" encoding="UTF-8" standalone="no"?><root>&amp;nbsp;</root> --------------望む結果-------------- on dom : &nbsp; <?xml version="1.0" encoding="UTF-8" standalone="no"?><root>&nbsp;</root> --------------------------------------

    • ベストアンサー
    • Java
  • phpでxmlが動かない macOsXLion

    phpでxmlの練習をしてるんですが全く動作しません。なんででしょうか? コードを次に書きます。 <?php $doc = new DOMDocument; // DOMDocumentのインスタンス生成 $root = $doc->createElement("cars");  // root要素を作成する $doc->appendChild($root); // docの子としてrootを追加する $elm1 = $doc->createElement("car"); // car要素を作成する $root->appendChild($elm1); // car要素をrootの子として追加する $txt1 = $doc->createTextNode("スポーツカー"); // テキストノードを作成する $elm1->appendChild($txt1); // テキストノードをテキスト要素としてelm1の子として追加する $elm2 = $doc->createElement("car"); // car要素を作成する $root->appendChild($elm2); // rootの子としてcar要素を追加する $txt2 = $doc->createTextNode("トラック"); // テキストノードを作成する $elm2->appendChild(txt2); // elm2にtxt2を追加する print $doc->saveXML(); ?> よろしくお願いします。

    • ベストアンサー
    • PHP
  • VBSでXMLを操作したい

    現在Webアプリケーションの簡単なものを作成しています。 データベースはXMLで出来上がっているのでそれを使いたいのですが、入力フォームに入れてもらったデータをXMLに変換してXMLデータベースに追加、保存しようと思います。 一応フォームに入力したものをXMLデータとして出力までは考えられたのですが、既存のXMLを読み出す方法と追加する方法、保存する方法がよくわかりません。 よろしくお願いいたします。 <html> <head> <title>入力フォーム</title> <script type="text/vbscript"> <!-- Option Explicit dim xmldoc Sub window_onload() set xmldoc=createObject("MSXML2.DOMDocument") xmldoc.async=False xmldoc.loadXML("<?xml version='1.0'?><全体/>") End Sub Sub makeXml() dim myInfoElement,myDataElement,myDataText dim ret1,ret2,ret3,ret4 set ret1=xmldoc.createTextNode(vbCRLf) xmldoc.documentElement.appendChild(ret1) set myInfoElement=xmldoc.createElement("名簿") set ret2=xmldoc.createTextNode(vbCRLf) myInfoElement.appendChild(ret2) set myDataElement=xmldoc.createElement("名前") set myDataText=xmldoc.createTextNode(myForm.myName.value) myDataElement.SetAttribute "年",myForm.myAge.Value myDataElement.appendChild(myDataText) myInfoElement.appendChild(myDataElement) set ret3=xmldoc.createTextNode(vbCRLf) myInfoElement.appendChild(ret3) xmldoc.documentElement.appendChild(myInfoElement) set ret4=xmldoc.createTextNode(vbCRLf) xmldoc.documentElement.appendChild(ret4) myForm.xmlSource.value=xmldoc.xml End Sub --> </script> </head> <body> <form name="myForm"> 名前:<input type="text" size="30" name="myName"><br> 年:<input type="text" size="10" name="myAge"> <button onClick="makeXml()">XMLの作成</button><br> <textarea name="xmlSource" cols="60" rows="15"></textarea> </form> </body> </html>

  • XMLでの改行について

    XMLでの改行について ASPにてXMLを作成し、XSL(FO)にて帳票形式を作成し、TomcatにてPDFを作成しています。 ASP側にて、  Set objXmlNode = objXmlDoc.CreateElement("CV0")  Set objXmlText = objXmlDoc.createTextNode("文字" & vbCrLf & "文字" & vbCrLf& "文字")   objXmlNode.appendChild(objXmlText)  objTrNode.appendChild objXmlNode のようにXMLを作成し、XSL(FO)には、 <xsl:template match="CV0"> <fo:table-cell border-width="0.5mm" border-style="solid" padding="1mm" height="30mm"> <fo:block font-size="12pt" font-family="MSMincho" text-align="center"> <xsl:value-of select='.'/> </fo:block> </fo:table-cell> </xsl:template> のように表記しておりますが、帳票を見ると、 「文字 文字 文字」 になるはずが、 「文字 文字文字」 となってしまいます。 原因として何が考えられるのでしょうか? 回答のほど、よろしくお願いします。

    • 締切済み
    • XML
  • XMLでこんなの作りたい。

    [ 環境 ] OS:WindowsXP Pro PHP:5.3.1 Apache:2.2.14 DBServer:SQLServer2005 EXPRESS [ 質問 ] DB側データ row,level,level_name 0,level1,root 1,level2,admin という様なデータをXMLにて以下の様な表示にしたい。 <?xml version="1.0" encoding="UTF-8" ?> <result> <row row="0"> <level>level1</level> <level_name>root</level_name> </row> <row row="1"> <level>level2</level> <level_name>admin</level_name> </row> </result> この場合、以下のソースをどの様に変更したら良いか アドバイスを頂けたらと思います。 <?php // SQLServerとの接続 require("connect-sqlserver.php"); // XML 生成 $dom = new DOMDocument("1.0"); $node = $dom->createElement("result"); $parnode = $dom->appendChild($node); // MSSQLSERVR への接続セット $db = mssql_connect($server, $userid, $passwd); mssql_select_db($dbName, $db); // [SYSW_LEVEL]テーブルからフィールド情報取得 $query = "SELECT * FROM SYSW_LEVEL"; $res = mssql_query($query, $db); header("Content-type: text/xml"); // XMLへフィールドの値を渡す while ($row = mssql_fetch_assoc($res)) { $node = $dom->createElement("row"); $newnode = $parnode->appendChild($node); $newnode->setAttribute("level", $row['LVL_LEVEL']); $newnode->setAttribute("level_name", mb_convert_encoding($row['LVL_LEVELNAME'],'UTF-8','CP932')); } $dom->encoding="UTF-8"; echo $dom->saveXML(); ?> 以上、よろしくお願い致します。

    • 締切済み
    • PHP

専門家に質問してみよう