![](/img/trans.png)
[英]using SAX parser, how do you parse an xml file which has same name tags but in different elements?
[英]How to get file name in SAX Parser?
有没有一种方法可以在SAX解析器处理程序类中获取文件名? 我需要在文本文件中写入文件名以及标签内容。
请帮忙。
编辑:我需要这个
saxParser.parse( “Input.xml中”,saxHandler); 当我有'id'标签时,在saxHandler中读取该值并将其与文件名一起存储。 它可以是地图或对象。
SAX解析器通常在调用任何其他事件处理方法之前将调用ContentHandler.setDocumentLocator()
。 提供的Locator可用于获取SystemId,如果要从文件中进行解析,则SystemId通常会以URI形式为您提供源文件名。
一些警告:
鼓励SAX解析器调用此方法,但不必这样做。
在某些情况下,例如,如果从FileInputStream进行解析,则解析器可能无法识别源文件名(因此也无法识别SystemId)(实际上,源XML不一定来自文件)。
如果源文档包含多个外部实体,则SystemId可以在解析过程中更改。
我来这里寻找答案。 我怀疑迈克尔·凯比我对这件事了解得多,但是我无法从他的帖子中找到一种方法,所以我将发布对我有用的方法(Python 3)。 在我的元素处理程序的startDocument方法中,我具有以下内容:self.sInFName = Path(self._locator.getSystemID())。name(这使用PathLib的Path方法,即在您的顶部附近执行“从pathlib import Path”代码)。然后,我可以从处理程序内部的任何位置引用要解析的文件的文件名。 (如果需要文件的完整路径,请省略.name)
正如其他人指出的那样,这仅在您实际上在解析文件时才有效。 如果您正在从stdin中读取内容或其他内容,则getSystemID()将返回文件路径以外的其他内容(我不知道是什么)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.