0

アルバムの 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 が返されます。これは、リストに要素が含まれていないことを意味するため、どこかに解析エラーがあります。

4

1 に答える 1

1

試す

var albumList = xml.Elements("Album");
于 2012-12-08T15:43:50.697 に答える