XML データをテキストエリア入力から PHP にポストして、解析してテーブルを出力できるようにする必要があります。
いくつかの方法を試しましたが、どれも機能していないようです。
現在、私はこれを持っています:
jQuery('#btnRegistrarXML').live('click', function(){
var xml;
if (jQuery('#txtRegXML').val() == ""){
AddMsg('You must paste XML from the excel export into the textarea.', 'error');
} else {
jQuery.post('registrar-xml-to-table.php', {xml:escape(jQuery('#txtRegXML').val())}, function(data){
jQuery('#regXMLasTable').empty();
jQuery('#regXMLasTable').append(data);
});
}
displayMsgs();
});
PHPは次のとおりです。
$xmlraw = urldecode($_POST['xml']);
$dom = new DOMDocument;
$dom->preserveWhiteSpace = FALSE;
$dom->loadXML($xmlraw);
$dom->formatOutput = TRUE;
$xmlstr = $dom->saveXml();
$xml = simplexml_load_string($xmlstr);
echo "<p>xmlraw:</p>";
echo $xmlraw;
echo "<p>xml:</p>";
echo $xml;
foreach ($xml->document as $doc) {
echo '<p class="alert alert-error">'.$doc->title.'</p>';
}
最初の echo $xmlraw は機能しています - XML 文字列をすべて 1 行で出力します - ポストはデータを適切に送信しています。
2 番目の echo $xml は何も出力せず、foreach も何も出力しません。PHP で何かが機能していません。
また、 $xmlraw を simplexml_load_string($xmlraw) に直接ロードしようとしましたが、機能しません-形式が整っていないためだと思いますか?
テストに使用している XML は次のとおりです。
<?xml version="1.0"?>
<document>
<title>
Foobar
</title>
</document>
この ( http://tsdexter.com/webservice-testing/programs-list.php ) ページのテキスト領域に XML を貼り付けてから、xmlraw の下の要素を調べると、生の xml 文字列がエコーされていることがわかります -ただし、xmlの下には何もありません。また、foreachも何も出力しません。
ここに jsFiddle があるので、HTML/JS を見ることができます - PHP ページに ajax できないため、実際には何もしません - そこで、上記の PHP バージョンをテストに含めました。http://jsfiddle.net/tsdexter/EDqQB/
何か案は?