2014-09-05 4 views
2

xml을 XDocument 개체로로드하려고합니다.XmlReader 상태는 대화 형이어야합니다.

public void ValidateRules(XmlReader xml) 
{ 
    xml.MoveToContent(); 
    XDocument xDoc = new XDocument(); 
    xDoc = XDocument.Load(xml); 
} 

그러나 "XmlReader 상태는 대화 형이어야합니다."오류가 계속 발생합니다. 이 문제를 해결하기 위해 검색 한 다음 맨 위에 MoveToContent() 메서드를 추가했습니다 (이 경우 ReadState가 Interactive로 변경됨). 그러나 작동하지 않았습니다. ReadState는 읽기 전용이며 값을 변경할 수 없습니다.

여기에서 문제가 될 수있는 것은 무엇입니까?

P. 로드하려는 XML 파일에 DTD 참조가 있습니다. XML과 동일한 경로에 있습니다. 이것이 중요한지 여부를 모릅니다. 함수의 서명을 감안할 때

+1

이 체크 아웃 : http://stackoverflow.com/questions/2441673/reading-xml-with-xmlreader-in -c-sharp. 파일에서 xml을로드 할 수있는 경우 : xDoc = XDocument.Load (string URI); – Arie

답변

0

, 당신은 할 수 :

var xDoc = XDocument.Parse(xml.ReadOuterXml()); 

를 다른 방법으로,이 설계에서 요구되어 있지 않은 경우, 사용하지 않는 XmlReader -이 코드 이외의 뭔가가 필요하지 않다면 당신 ' 표시했습니다, 당신은 추상의 추가 레이어를 건너 뛸 수 있습니다 단순히 사용

var xDoc = XDocument.Load(PATH_TO_YOUR_FILE); 

또는

var xDoc = XDocument.Parse(YOUR_XML_STRING); 
+0

이 코드를 시도했습니다. 하지만 그것은 내가 XML에서 참조한 DTD를 찾지 않는 것처럼 보입니다. 그것은 나에게 다음과 같은 오류를주고있다 : "선언되지 않은 개체 '복사'에 대한 참조. 라인 17, 위치 8". 'copy'는 DTD에 정의 된 엔터티입니다. –

+0

@AshwinPrabhu 정확히 어떤 코드입니까? 그것들은 3 개의 다른 코드 행입니다. 참조 용으로 XML을 게시 할 수도 있습니까? – decPL