试图读出xml但得到html

时间:2011-01-27 15:20:04

标签: c# asp.net xml

如果您查看此链接: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&amp;gn=quite+tight"/>
  <guildInfo>
    <guildHeader battleGroup="Blutdurst" count="76" faction="1" name="quite tight" nameUrl="quite+tight" realm="Aegwynn" realmUrl="Aegwynn" url="r=Aegwynn&amp;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中不好..所以我真的不知道他们在做什么不同。

3 个答案:

答案 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),这就是您遇到问题的原因。

如果是这种情况,您必须以编程方式登录才能解决此问题。