2012-12-08 52 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");