System.Xml.XmlReader의 현재 줄 번호를 얻는 방법을 알고있는 사람이 있습니까? 파일에서 Xml 요소를 찾는 위치를 기록하려고합니다. IXmlLineInfo
인터페이스의System.Xml.XmlReader (C# & .Net)의 현재 줄 번호
답변
테이크의 장점은 XmlReader
지원 :
IXmlLineInfo xmlInfo = (IXmlLineInfo)reader;
int lineNumber = xmlInfo.LineNumber;
는 IXmlLineInfo
인터페이스 확장이 설명서에 아주 나쁜; 몇 가지 파기에서부터 다음과 같이 말할 수 있습니다.
1) System.Xml.XmlReader
은 추상적이므로이 인스턴스를 절대 다루지 않을 것입니다. 그렇기 때문에 구현하지 않습니다. IXmlLineInfo
이 다량으로 System.Xml.IXmlLineInfo
인터페이스는 두 가지 속성을 제공합니다)
이 (가 그랬다면,하지만, 그것은 단지 조금 더 쉽게 : 모든 것을 할 것)와 관련된되지 않습니다 LineNumber
및 LinePosition
(우리가 관심사가있는) , 더하기 메서드 : HasLineInfo()
, 설명서에 따르면, 구현자가 lineinfo를 반환 할 수 있는지 알려줍니다. System.Xml.XmlReader
의 문서화 상속자의
3), 우리는이 :
System.Xml.XmlDictionaryReader - abstract, used by WCF for serialization, no IXmlLineInfo
System.Xml.XmlNodeReader - used when reading a node, no IXmlLineInfo
System.Xml.XmlTextReader - used when reading a stream of data, has IXmlLineInfo
System.Xml.XmlValidatingReader - used when reading a stream of data and validating, has IXmlLineInfo.
위 목록을 보면,
XmlDictionaryReader
가 내부적으로 사용하는 것입니다, 당신이 경과 한 때
XmlNodeReader
를 사용할 것입니다 읽혀질 노드 (이미 파싱되었지만 이미 소스 문서에서 묶여 있음),
XmlTextReader
및
XmlValidtingReader
(둘 다
IXmlLineInfo
을 구현 함)은 문서를 읽을 때 사용됩니다. 따라서 길고 짧은 정보는 위치 정보를 제공하는 것이 가능하거나 유용 할 경우 프레임 워크가 그렇게하는 것으로 보입니다.
즉, 설명서는 매우 가벼운 것 같습니다. 그냥이 일을하는 데, 나는 (_xr 알 수없는 콘크리트 System.Xml.XmlReader
의 구현 인 상태) 일을 결국 : 나는 실제로 위의 코드를 실행하면 말하게되면서, 그 모두와 함께
string position = "(unknown)";
if (_xr != null && typeof(System.Xml.IXmlLineInfo).IsInstanceOfType(_xr) &&
((System.Xml.IXmlLineInfo)_xr).HasLineInfo())
{
System.Xml.IXmlLineInfo li = (System.Xml.IXmlLineInfo)_xr;
position = "(" + li.LineNumber.ToString() + "," + li.LinePosition.ToString() + ")";
}
, _xr의 유형이 될 수있을 테니까요 System.Xml.XsdValidatingReader
(행운을 빌어 그 문서를 찾으십시오!)은 System.Xml.XmlReader
에서 상속되지만 System.Xml.XmlValidatingReader
또는 System.Xml.XmlTextReader
을 상속하지 않습니다. 따라서 위와 같은 방법을 사용하는 것이 좋습니다.
- 1. 루아의 현재 줄 번호
- 2. Visual Studio 2010 C++ 컴파일러 - 컴파일시 현재 줄 번호 얻기
- 3. .NET의 C 번호 : Ajax 호출 컨텍스트에 대한
- 4. C# - 현재 줄 강조 표시
- 5. 코드의 줄 번호
- 6. GtkTextView 줄 번호 받기
- 7. C 번호 - 텍스트 상자 줄 바꿈 문제
- 8. C# 텍스트 파일에 줄 번호 추가
- 9. Java JTextArea 줄 번호
- 10. PhpStorm 배경색 줄 번호
- 11. Eclipse 디버그보기 현재 줄
- 12. .Net의 멀티 모니터 작업 표시 줄
- 13. 안드로이드 : 예외 오류 (줄 번호)
- 14. Sitecore 개발자 센터 줄 번호
- 15. Html textarea에 줄 번호 추가하기
- 16. 파일의 전체 줄 번호 검색
- 17. C# 및 .NET의 libcurl
- 18. body ID를 .net의 현재 파일 이름으로 설정하십시오.
- 19. Delphi 2010 Comandline 컴파일러 줄 번호 얻기
- 20. 현재 프레임 번호 검색 중
- 21. jqGrid에서 현재 페이지 번호 찾기
- 22. 편집 컨트롤에서 줄 번호 가져 오기
- 23. C 번호 :
- 24. 오프셋이 줄 번호 사이에 있는지 확인 하시겠습니까?
- 25. Excel XLSTART C# /. NET의 문제
- 26. C++ .NET의 초보 3D 그래픽
- 27. C# .NET의 Treenode 재정렬
- 28. C# .Net의 'LibrarySystem.ctrlSeparator'파일이 필요합니다.
- 29. DDD "C# .NET의 모듈"
- 30. C# .NET의 Environment.CurrentDirectory
나쁜 습관으로 보입니다. XmlReader는 IXmlLineInfo를 상속하지 않으므로이 추상 클래스의 구현은 인터페이스를 구현하지 못할 수 있습니다. 인터페이스 지원에 대한 점검이 필요합니다. – SerG
IXmlLineInfo xmlInfo = reader를 IXmlLineInfo로 사용하십시오. 이 좋은 코드 연습. @shuvra – Shuvra