XDocument xd = XDocument.Load("http://www.google.com/ig/api?weather=vilnius&hl=lt");
与号&
不是在一个字符串调用时含有一个URL所支持字符Load()
方法。 出现此错误:
XmlException是未处理:在给定的编码字符无效
你如何从URL加载XML到其中的URL在查询字符串的符号一个XDocument?
XDocument xd = XDocument.Load("http://www.google.com/ig/api?weather=vilnius&hl=lt");
与号&
不是在一个字符串调用时含有一个URL所支持字符Load()
方法。 出现此错误:
XmlException是未处理:在给定的编码字符无效
你如何从URL加载XML到其中的URL在查询字符串的符号一个XDocument?
你需要URL编码它 &
:
XDocument xd = XDocument.Load(
"http://www.google.com/ig/api?weather=vilnius&hl=lt");
你也许能够逃脱使用WebUtility.HtmlEncode
自动执行此转换; 但是,要小心,这是不是达到预定可使用该方法的。
编辑 :在这里真正的问题无关,与符号,但与谷歌的方法是使用自定义编码编码XML文档和未申报的。 (&符号只需要进行编码时发生中的特殊背景下,他们如<a href="…" />
的元素(X)HTML阅读的网址符号(&的)一个快速的解释。)
由于XML声明没有指定编码, XDocument.Load
内部落回到所要求的XML规范,这是与实际数据不兼容的默认UTF-8编码。
为了规避这个问题,你可以获取原始数据并将其手动使用下面的样本进行解码。 我不知道编码是否真的为Windows-1252,所以你可能需要做一些试验与其他编码。
string url = "http://www.google.com/ig/api?weather=vilnius&hl=lt";
byte[] data;
using (WebClient webClient = new WebClient())
data = webClient.DownloadData(url);
string str = Encoding.GetEncoding("Windows-1252").GetString(data);
XDocument xd = XDocument.Parse(str);
没有什么不对您的代码-这是完全可以拥有&
在查询字符串,它是独立的参数是如何定义的。
当你看到错误,你会看到,它无法加载XML,而不是从URL查询它:
XmlException:在给定的编码字符无效。 行1,位置473
其中明确指出您的查询字符串之外。
这个问题可能是“Apsiniaukę”(通知最后一个字符)的XML响应...
而不是“与”使用“ &
”或“ &
”。 它会正常工作。