0

我有一个 PHP 中的 Web 服务,它读取专辑的 XML 文件,并简单地将其作为字符串返回到我的 ASP.NET Web 表单。现在,发送和接收都很好。

问题是现在我想解析这些数据,以便将新专辑和其他信息(例如流派、艺术家和歌曲)保存到附加到我的 ASP.NET 网站的数据库中,这让我很头疼。

下面是 Web Service 客户端的代码:

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>

都在一条线上,这令人难以置信的沮丧。我不知道它是否甚至可以解析这样的数据......我想在 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 回答