gpt4 book ai didi

c# - 从 Web 服务读取 XML 节点

转载 作者:行者123 更新时间:2023-11-30 22:33:07 28 4
gpt4 key购买 nike

我一直在研究一个简单的 Windows Phone 7 应用程序,该应用程序使用基于 XML 响应的 http 网络服务。我正在使用以下 API http://api.chartlyrics.com/apiv1.asmx/

我的问题是读取返回的 XML。

函数 SearchLyricDirect 例如http://api.chartlyrics.com/apiv1.asmx/SearchLyricDirect?artist=michael%20jackson&song=bad返回以下 xml:

   <GetLyricResult xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://api.chartlyrics.com/">
<TrackId>0</TrackId>
<LyricChecksum>8a84ddec06f4fffe067edd2fdbece21b</LyricChecksum>
<LyricId>1710</LyricId>
<LyricSong>Bad</LyricSong>
<LyricArtist>Michael Jackson</LyricArtist>
<LyricUrl>
http://www.chartlyrics.com/28h-8gWvNk-Rbj1X-R7PXg/Bad.aspx
</LyricUrl>
<LyricCovertArtUrl>
http://ec1.images-amazon.com/images/P/B000CNET66.02.MZZZZZZZ.jpg
</LyricCovertArtUrl>
<LyricRank>9</LyricRank>
<LyricCorrectUrl>
http://www.chartlyrics.com/app/correct.aspx?lid=MQA3ADEAMAA=
</LyricCorrectUrl>
<Lyric>
.......Lyric.......
</Lyric>
</GetLyricResult>

我试过使用 XmlReader,但它说存在非法字符,例如XmlReader xmlr = XmlReader.Create(e.Result);

我试过使用 XDocument,但我无法为“GetLyricResult”下的元素获取任何值。

  XDocument xmltest = XDocument.Parse(e.Result);
Console.WriteLine(xmltest.Element("Lyric").Value);

我相信这很简单。

谢谢!

最佳答案

您没有注意定义的 XML 命名空间!

<GetLyricResult xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://api.chartlyrics.com/">

您还需要在 Linq-to-XML 查询中定义该 XML 命名空间:

 XDocument xmltest = XDocument.Parse(e.Result);
XNamespace ns = "http://api.chartlyrics.com/";

Console.WriteLine(xmltest.Element(ns + "GetLyricResult").Element(ns + "Lyric").Value);

此外:如果您使用 .Element,您的代码无论如何都无法正常工作,你需要从根上引用所有元素 - 所以在这里你首先需要“解决” <GetLyricResult>根节点,只有在那之后,你才能进入并获取 <Lyric>节点

关于c# - 从 Web 服务读取 XML 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8456727/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com