수천 개의 SGML 문서가 있습니다. 문서의 특정 요소를 가져올 필요가 있지만로드 할 때마다 XDocument, XMLDocument 또는 StreamReader로 읽으려고 할 때마다 다양한 XMLException 오류가 발생합니다.잘 작성되지 않은 SGML/XML 문서의 LOTS 및 LOTS 구문 분석을위한 전략
" '['은 (는) 예기치 않은 토큰입니다. ' 왜? 내가
<!DOCTYPE RChapter PUBLIC "-//LSC//DTD R Chapter for Authoring//EN" [] >
같은 DOCTYPE이있는 문서를 가지고 있기 때문에 나는이 "[]"안에 유효한 뭔가를해야한다고 배웠습니다. 다시 말하지만, 나는 문서의 생성을 통제하지는 않지만, 나는 그것을 "해독"하고 원하는 데이터를 얻는다. 또 다른 예는 예를 들어, "닫히지 않은 '요소를 가지고있다 :.
이 XMLException은<Caption>Plants, and facilities<hardhyphen><hyphen>Inspection.</Caption>
"라인 (27)의'하이픈 '시작 태그'캡션 '선 (27), 위치 (58)의 종료 태그가 일치하지 않습니다. " 당연하지, 그렇지?
그러나 그렇다면 질문은 XMLExceptions가 발생하지 않고 이러한 문서의 특정 요소에 실제로 도달 할 수있는 방법입니다. SAX 파서가 올바른 방법입니까? 나는 기본적으로 문서를 열고, 내가 원하는 요소로 바로 가려고합니다. (근처에 잘 형성되지 않았는지 걱정하지 않고) 데이터를 가져 와서 계속 진행하십시오. 난 그냥 XMLDocument로,하여 XDocument로 구문 분석 잊고, 그냥
str.Replace("<hardhypen><hyphen>", "-")
같은 간단한 문자열 교체를 수행 한 후 XML 파서 중 하나에로드하려고합니다. 전략에 대한 조언?
어떤 언어를 사용하고 있습니까? –
잘 형성되지 않았다면 C# 또는 VB.NET – Robert4Real
을 사용할 수 있습니다. XML이 아니고 문제가 있습니다. SGML을 XML로 먼저 변환하고 싶습니다. https://github.com/MindTouch/SGMLReader, http://mmalachowski.blogspot.com/2013/08/performance-test-of-c-html-xpath.html – Jodrell