我遇到的问题是我想使用 SAX defaultHandler 类的扩展解析出 1 个 XML 文档。当只使用一个处理程序时,我可以解析出 XML 并将不同的标签分配给对象的属性(请参阅域和区域)。一旦我在域和区域对象中拥有这些,我想将它们添加到另一个具有域和区域列表的对象(GroupedFiles)中。我遇到的问题是使用 2 个处理程序解析 1 个文档。我的理论,虽然不是最好的编码实践,是解析文档两次,使用域处理程序运行一次,设置域,然后添加到分组文件,然后对区域执行相同的操作。这是代码,
GroupedFiles groupedFiles = new GroupedFiles();
ArrayList<Domain> domains = new ArrayList<Domain>();
ArrayList<Area> areas = new ArrayList<Area>();
//Create parser from factory
XMLReader parser = XMLReaderFactory.createXMLReader();
//Creates an input stream from the file "someFile.xml"
InputStream in = new FileInputStream(new File("someFile.xml"));
InputSource source = new InputSource(in);
//Create handler instances
DomainHandler domainHandler = new DomainHandler();
AreaHandler areaHandler = new AreaHandler();
//Parses out XML from a document using each handler,
//adding it to an object with the correct properties then adds those
//to another object which features Lists of Domains, Areas, and Directories.
parser.setContentHandler(domainHandler);
parser.parse(source);
domains = domainHandler.getXML();
groupedFiles.setDomain(domains);
parser.setContentHandler(areaHandler);
parser.parse(source);
areas = areaHandler.getXML();
groupedFiles.setArea(areas);
但是我做不到,它似乎挂断了第二个parser.parse(source)
。如果我在运行后查看 groupedFiles 域已填充但区域未填充。有什么建议吗?