我试图从C#中的url加载xml,但问题是,xml文件附加了一个xsl,这意味着我没有得到xml文件的内容,而是使用xsl转换成的html。
有没有办法加载xml而不先转换它,这样我就可以得到xml的内容?
发布于 2009-08-06 17:03:02
URL中有".xml“并不意味着服务器会给您提供XML。对于您在示例中提供的URL,服务器将发出XHTML。(我也没有看到您在该文件的注释中提到的xml-stylesheet处理指令,这让我怀疑您是否看到了两个不同的东西。)在客户端,您无法改变这一点。如果有一种方法可以制定URL以从服务器获取原始XML,那么该站点上并没有提供这种方法。
它们似乎还提供了不是格式良好的XML的XHTML (根据您试图解析它时发生的情况来判断)。他们真不是太好了。
编辑:
好的,这里的罪魁祸首是这个站点显然会检查用户代理,以确定它是应该发送XML还是HTML。答案是here (为什么马丁·霍宁不在StackOverflow上?)演示了如何执行此操作:
string url = "http://eu.wowarmory.com/character-sheet.xml?r=Stormreaver&n=Sebassis";
HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(url);
httpRequest.UserAgent = @"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)";
using (HttpWebResponse httpResponse = (HttpWebResponse)httpRequest.GetResponse())
{
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load(httpResponse.GetResponseStream());
Console.Write(xmlDocument.OuterXml);
}我希望我能告诉你为什么他们这样做,为什么这个用户代理工作,而其他人不工作,但这有点超出了我的专业领域。也许其他人可以对此有所了解。
发布于 2009-08-05 17:00:32
如果服务器在提供文件之前对其进行转换,则不能,您只能获得转换后的版本。但是,如果它只指定引用XSL样式表的处理指令,并且浏览器对其进行转换,则默认情况下将获得XML。
发布于 2009-08-05 17:21:56
您是否尝试过将HttpWebRequest对象的Accept属性设置为"text/xml"?
https://stackoverflow.com/questions/1234485
复制相似问题