C#의 URL에서 XML을로드하려고하는데 문제는 XML 파일에 xsl이 첨부되어 있다는 것입니다. xml 파일의 내용은 xsl을 사용하여 변환 된 html입니다.URL에서 xml을 C#에서 스타일을 지정하지 않고로드하는 중
xml을 먼저 변형하지 않고로드하는 방법이 있습니까? xml의 내용 만 가져올 수 있습니까?
C#의 URL에서 XML을로드하려고하는데 문제는 XML 파일에 xsl이 첨부되어 있다는 것입니다. xml 파일의 내용은 xsl을 사용하여 변환 된 html입니다.URL에서 xml을 C#에서 스타일을 지정하지 않고로드하는 중
xml을 먼저 변형하지 않고로드하는 방법이 있습니까? xml의 내용 만 가져올 수 있습니까?
URL에 ".xml"이 있다는 사실이 서버가 XML을 제공한다는 의미는 아닙니다. 귀하의 예제에서 제공 한 URL의 경우, 서버는 XHTML을 방출합니다. (나는 또한 그 파일에있는 당신의 코멘트에서 언급 한 xml-stylesheet
프로세싱 지시어를 보지 않고있다. 두 가지 다른 것을보고 있는지 궁금하게 만든다.) 클라이언트 측에서 변경할 수있는 것은 아무것도 없다. 서버에서 원시 XML을 가져 오기 위해 URL을 공식화하는 방법이 있다면 해당 사이트에 문서화되어 있지 않습니다.
XHTML을 잘 처리하지 못하는 XML을 처리하는 것처럼 보입니다 (구문 분석을 시도 할 때 판단). 그것들은별로 좋지 않습니다.
편집 :
좋아, 여기 범인이 사이트는 외관상으로는 XML 또는 HTML을 전송할지 여부를 결정하기 위해 사용자 에이전트를 확인한다는 것입니다.
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);
}
을 나는 그들이 그렇게하는 이유를 말할 수 있으면 좋겠다, 그리고 왜이 사용자 에이전트 작품 : 대답 here는 (? 어떤 이유기도에 StackOverflow에 마틴 Honnen 아닌)을 수행하는 방법을 보여줍니다 다른 사람들은 그렇지 않지만 내 전문 분야를 벗어난 곳입니다. 어쩌면 다른 누군가가 이것에 대해 밝힐 수 있습니다.
서버가 파일을 제공하기 전에 파일을 변환하는 경우, 변환 된 버전 만 얻을 수 있습니다. 그러나 XSL 스타일 시트를 참조하는 처리 명령 만 지정하고 브라우저가이를 변환하면 XML이 기본적으로 제공됩니다.
xsl은 다음과 같이 xml에 지정됩니다. xml-stylesheet type = "text/xsl"href = "/ layout/style/sheet.xsl"?> xml을 가져 오지 않을까요? 변형 된 버전이 아닌가? 그 경우 내가 XmlDocument.Load()를 사용하여로드 할 수 없어야합니까? – Tuvix
물론 XML을 얻을 수 있습니다. 'XmlDocument'는 자동으로 아무것도 변환하지 않습니다. –
HttpWebRequest 개체의 Accept 속성을 "text/xml"로 설정해 보았습니까?
이 속성은 변환 된 XML과 원본 XML을 비교하는 데 어떤 차이가 있습니까? –
Accept 속성은 HTTP 요청의 Accept Header 값을 나타냅니다. 그것은 당신이 받아들이거나 원하는 MIME-Types와 다중 선택이 가능하다는 환경 설정을 정의합니다. 기본적으로 요청 개체는 텍스트/HTML을 선호하므로 응답하는 웹 서버가 해당 환경 설정을 수용 할 수 있습니다. 나는 서버의 응답을 바꿀 수있는 기회를 놓치지 않고 XML에 대한 환경 설정을 제안했다. – MyItchyChin
HttpWebRequest 객체를 사용하고 text/xml에 accept 속성을 설정하면 동일한 결과를 얻습니다. – Tuvix
시도해 보셨습니까? 변환 작업을 본 적이 있습니까? –
이 코드를 사용했습니다 : XmlTextReader myReader = new XmlTextReader ("http://eu.wowarmory.com/character-sheet.xml?r=Stormreaver&n=Sebassis"); myReader.XmlResolver = null; XmlDocument mySourceDoc = new XmlDocument(); mySourceDoc.Load (myReader); myReader.Close(); Visual Studio에서 디버깅 할 때 오류가 발생하고 myReader 값에 xml이 아닌 html이 포함됩니다. – Tuvix