Загрузка XML из URL без стилизации в C # - PullRequest
0 голосов
/ 05 августа 2009

Я пытаюсь загрузить xml из URL в C #, но проблема в том, что к файлу xml прикреплен xsl, что означает, что я не получаю содержимое файла xml, но HTML, что он преобразован в использование xsl.

Есть ли способ загрузить xml без предварительного преобразования, поэтому я просто получаю содержимое xml?

Ответы [ 3 ]

2 голосов
/ 06 августа 2009

Тот факт, что URL содержит «.xml», не означает, что сервер предоставит вам XML. В случае URL, который вы указали в своем примере, сервер испускает XHTML. (Я также не вижу директивы обработки xml-stylesheet, которую вы упомянули в своем комментарии в этом файле, что заставляет меня задуматься, рассматриваете ли вы две разные вещи.) На стороне клиента вы ничего не можете сделать, чтобы это изменить. Если есть способ сформулировать URL для получения необработанного XML с сервера, на этом сайте это не задокументировано.

Кажется, они также обслуживают XHTML, который не является правильно сформированным XML (судя по тому, что происходит, когда вы пытаетесь его проанализировать). Это не очень мило с их стороны.

Edit:

Хорошо, поэтому виновник в том, что этот сайт, очевидно, проверяет пользовательский агент, чтобы определить, должен ли он отправлять XML или HTML. Ответ здесь (ну почему, молитесь, разве Мартин Хоннен в 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);
    }

Я бы хотел рассказать вам, почему они это делают, и почему этот пользовательский агент работает, а другие нет, но это немного выходит за рамки моей компетенции. Может быть, кто-то еще может пролить свет на это.

0 голосов
/ 05 августа 2009

Вы пытались установить для свойства Accept объекта HttpWebRequest значение "text / xml"?

0 голосов
/ 05 августа 2009

Если сервер преобразует файл перед его обслуживанием, то нет, вы можете получить только преобразованную версию. Однако, если в нем указана только инструкция обработки, которая ссылается на таблицу стилей XSL, а браузер преобразует ее, вы получите XML по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...