我有一个 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,这意味着列表不包含任何元素,因此某处存在解析错误。