我有成千上万的SGML文档,其中一些格式良好,一些格式不够完善。我需要获取文档中的某些ELEMENTS,但每次我加载并尝试将它们读入XDocument,XMLDocument或甚至是StreamReader时,都会得到各种各样的XMLException错误。解析不完整格式的SGML/XML文档的LOTS和LOTS的策略
像'''是一个意外的标记。“。为什么?因为我有一个DOCTYPE文件,如
<!DOCTYPE RChapter PUBLIC "-//LSC//DTD R Chapter for Authoring//EN" [] >
我知道“[]”需要内部有效的东西。同样,我不控制文档的创建,但我必须“破解”它们并获取我想要的数据。另一个例子是具有一个“非闭合”元件,例如:
<Caption>Plants, and facilities<hardhyphen><hyphen>Inspection.</Caption>
这XMLException是“第27行的‘连字符’开始标记不‘标题’线27,位置58的结束标记相匹配。 “很明显,对吗?
但是接下来的问题是,如何在这些文档中实际获得某些ELEMENTS,而不会遇到XMLExceptions。 SAX解析器是否正确?我基本上想打开文档,直接转到我想要的元素(不用担心附近可能形成或不可能形成什么),拉取数据,然后继续。如果我只是忘了为XMLDocument,的XDocument解析,并只是做简单的字符串替换像
str.Replace("<hardhypen><hyphen>", "-")
,然后尝试将其加载到XML解析器之一。有关战略的任何提示?
您使用哪种语言? – 2010-11-20 04:00:29
我可以使用C#或VB.NET – Robert4Real 2010-11-20 14:24:07
,如果它没有很好地形成,它不是XML,那是你遇到的问题。你想先将你的SGML转换为XML,首先https://github.com/MindTouch/SGMLReader,http://mmalachowski.blogspot.com/2013/08/performance-test-of-c-html-xpath.html – Jodrell 2017-03-09 13:42:26