アルバムの XML ファイルを読み取り、それを文字列として ASP.NET Web フォームに返す Web サービスを PHP で作成しています。これで、送受信は問題ありません。
問題は、新しいアルバムやその他の情報 (ジャンル、アーティスト、曲など) を ASP.NET Web サイトに接続されたデータベースに保存するために、このデータを解析したいのですが、頭痛の種です。
Web サービス クライアントのコードは次のとおりです。
protected void btnGetAlbums_Click(object sender, EventArgs e)
{
phpPublisher.albums albums = new albums();
string result = albums.getAlbums();
if (String.IsNullOrEmpty(result))
{
txtResult.Text = "No albums found";
}
else
{
// parse XML
var xml = XElement.Parse(result);
var albumList = xml.Descendants("Albums")
.Elements("Album");
if (albumList.Count() > 0)
{
txtResult.Text = "Has at least 1 album!";
}
}
}
これは今のところ、非常に「デモ」的なコードにすぎません。データを解析することさえできないため、データベースの挿入などに取り組んでいません。
テキストボックスにxml
変数を出力すると、次のように表示されます。txtResult
<Albums> <Album> <AlbumTitle>Stripped</AlbumTitle> <AlbumArtist>Christina Aguilera</AlbumArtist> <AlbumGenre>Pop</AlbumGenre> <AlbumSongs> <AlbumSong>Beautiful</AlbumSong> </AlbumSongs> </Album></Albums>
すべてが 1 行にまとめられているため、非常にイライラします。このようなデータを解析できるかどうかはわかりません... PHP 側でやりたいことは、ASP.NET が読み取ることができる XML データ オブジェクトを送信することです。これは可能ですか?
私の PHP Web サービス関数は次のようになります (文字列を返します)。
function getAlbums() {
$dataSource = "albums.xml";
if(file_exists($dataSource)) {
$xml = simplexml_load_file($dataSource);
$dom = new DOMDocument('1.0');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($xml->asXML());
return $dom->saveXML();
} else {
return null;
}
}
どんな助けでも大歓迎です。ありがとうございました。
PS を実行するalbumList.Count()
と 0 が返されます。これは、リストに要素が含まれていないことを意味するため、どこかに解析エラーがあります。