와 XML을 구문 분석 할 때 무엇을 XmlDocument로 XML 파일을 구문 분석에 대한 내 옵션은 여전히 나중에 오류 메시지를 줄 정보를 유지? (여담으로, XML의 Deserialisation과 같은 일을 할 수 있습니까?) C# : 라인 정보 된 XmlDocument
옵션
포함하는 것 :와 XML을 구문 분석 할 때 무엇을 XmlDocument로 XML 파일을 구문 분석에 대한 내 옵션은 여전히 나중에 오류 메시지를 줄 정보를 유지? (여담으로, XML의 Deserialisation과 같은 일을 할 수 있습니까?) C# : 라인 정보 된 XmlDocument
옵션
포함하는 것 :내가 아는 유일한 다른 옵션 of는 XDocument.Load()
이고, 그의 과부하는 LoadOptions.SetLineInfo
을 수용합니다. 이것은 XmlDocument
과 거의 같은 방법으로 소비됩니다. 더 당신이 XDocument
를 사용하는 경우 (XmlDocument
를 사용하여이 작업을 수행하는 방법이 내장되어
(앤디의 코멘트 @에서 확장 응답), 당신은 LoadOptions.SetLineInfo
을 허용 XDocument.Load()
오버로드를 사용할 수 있습니다 - 참조 this question). 더 내장 된 방법은 없지만
있습니다 (SharpDevelop 프로젝트에서) 여기에서 PositionXmlDocument
래퍼 클래스를 사용할 수 있습니다
를 사용하려면, 당신은 Load
를 사용해야합니다 XmlReader
을 허용 과부하 (다른 Load
오버로드 당신에게 줄 번호 정보를 제공하지 않습니다 정규 XmlDocument
클래스로 이동합니다). 당신이 줄 번호를 검색 PositionXmlElement
이 문서에서 어떤 XmlNode
캐스팅 할 수 있어야
using (var reader = new XmlTextReader(filename))
{
var doc = new PositionXmlDocument();
doc.Load(reader);
}
을 이제 : 현재 파일 이름을 허용하는 XmlDocument.Load
오버로드를 사용하는 경우, 다음과 같이 코드를 변경해야합니다 및 열 :
var node = doc.ChildNodes[1];
var elem = (PositionXmlElement) node;
Console.WriteLine("Line: {0}, Position: {1}", elem.LineNumber, elem.LinePosition);
이것은 정말 retrospectivley를 추가 할 때 유용합니다. XmlDocument를 기반으로 많은 코드를 작성했으며이 파일을 추가 한 다음 3 줄의 코드를 추가하여 유용한 위치 정보 사용자 의견을 제시 할 수 있다고 제안했습니다.) ... 필요합니다. ICSharpCode.WpfDesign.XamlDom를 사용하여'추가;'- 그건 아마도 C#을 사용자에게 눈부시게 분명하지만, 나는 C#을 새로운 오전 : 오 ... 일을! –
현재로서는 .net이 좋을 것입니다.하지만 불행히도 저는 여전히 .net 2.0을 작성하고 있습니다. (I 질문에서 언급 한 것입니다하지만 난 게시물을 데이트하고 싶지 않았다) –
나는 그런 경우가 될 줄 알았는데. 다른 두 가지 사이에서, 나는'XPathDocument' 접근 방식을 선호한다고 생각합니다. – dahlbyk
XmlDocument 방식을 고수하고이 코드를 래퍼로 살펴보십시오. https://github.com/icsharpcode/SharpDevelop/blob/master/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/PositionXmlDocument.cs – Andy