如果您查看此链接:http://armory.wow-europe.com/guild-info.xml?r=Aegwynn&n=Quite+Tight
以视觉方式使用通常的HTML ...但如果你右键单击并打开源代码,我需要一个xml来解决我的问题。
我正在使用XmlReader ..但是他读出了html ..我该如何解决这个问题?
这是我的代码部分:
string url = "http://armory.wow-europe.com/guild-info.xml?r=" + realm + "&n=" + editedGuildName;
// XML Resolver
XmlUrlResolver resolver = new XmlUrlResolver();
resolver = null;
// XML reader
XmlReaderSettings settings = new XmlReaderSettings();
settings.DtdProcessing = DtdProcessing.Ignore;
XmlReader reader = XmlReader.Create(url, settings);
while (reader.Read())
{
guildDataList.Add(reader.ReadString());
}
我的列表正在填充页面的html视觉效果
编辑:
xml的前几部分:
<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="/_layout/guild/roster.xsl"?><page globalSearch="1" lang="de_de" requestUrl="/guild-info.xml">
<tabInfo subTab="guildRoster" tab="guild" tabGroup="guild" tabUrl="r=Aegwynn&gn=quite+tight"/>
<guildInfo>
<guildHeader battleGroup="Blutdurst" count="76" faction="1" name="quite tight" nameUrl="quite+tight" realm="Aegwynn" realmUrl="Aegwynn" url="r=Aegwynn&gn=quite+tight">
<emblem emblemBackground="39" emblemBorderColor="14" emblemBorderStyle="5" emblemIconColor="14" emblemIconStyle="145"/>
</guildHeader>
我看到一些使用xml的人我需要使用PHP以及以下部分代码:
$url = "http://eu.wowarmory.com/character-sheet.xml?r=".urlencode($realm)."&n=".urlencode($char);
ini_set("user_agent","Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4");
ini_set("default_socket_timeout", 10);
$contextOptions = array("http" => array ("header" => "Cookie: cookieLangId=de_de\r\n"));
$context = stream_context_create($contextOptions);
@$file = file_get_contents( $url, false, $context);
if( empty($file)) {
return false;
exit;
}
# neues DOM
$dom = new DOMDocument('1.0');
$dom->loadXML($file);
它似乎对他们很好..我在PHP中不好..所以我真的不知道他们在做什么不同。
答案 0 :(得分:1)
这样做 - 由于某种原因,如果您没有正确设置客户端的用户代理,请求只会检索HTML(下面只是一个示例标识,可以是任何浏览器)。服务器必须进行某种检查以评估User-agent标头 - 在设置之后,它会提供XML:
WebClient wc = new WebClient();
wc.Headers.Add("User-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
string resultXML = wc.DownloadString("http://armory.wow-europe.com/guild-info.xml?r=Aegwynn&n=Quite+Tight");
XDocument doc = XDocument.Parse(resultXML);
答案 1 :(得分:1)
问候黑暗,
我注意到当我下载文件“http://armory.wow-europe.com/guild-info.xml?r=Aegwynn&n=Quite+Tight”(使用一个小的href html文件)时得到xml文件。 但是,我相信当您从C#端访问该站点时,您将获得HTML代码。
也许找到一种先下载的方法,暂时将其保存在磁盘上,访问它的数据,并在完成后删除它。 (就像BrokenGlass给出了一个例子)
答案 2 :(得分:0)
根据对问题的评论以及我在加载页面时看到的内容,我假设您在看到xml时可能已登录(可能由Firefox自动登录)。因此,您的代码可能会得到我们都看到的相同错误页面(html),这就是您遇到问题的原因。
如果是这种情况,您必须以编程方式登录才能解决此问题。