2012-12-08 88 views
0

我在PHP中有一個Web服務,它讀取相冊的XML文件,並將其作爲字符串簡單地返回給我的ASP.NET Web窗體。現在,發送和接收都很好。在C#中解析XML的問題ASP.NET

問題是,現在我想解析這些數據,以便將新的專輯和其他信息(例如流派,藝術家和歌曲)保存到我的ASP.NET網站的數據庫中,我頭痛。

這裏的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!"; 
       } 
      } 
     } 

這是現在只是很「demo'十歲上下的代碼,我還沒有解決的數據庫中插入和所有因爲我不能甚至解析數據。

如果我輸出我txtResult文本框中xml變量,它表明:

<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; 
     } 
    } 

任何幫助表示讚賞。謝謝。

P.S.當我執行albumList.Count()時,它返回0,這意味着該列表不包含任何元素,所以在某處存在解析錯誤。

回答

1

嘗試

var albumList = xml.Elements("Album");