@Nonnull public XmlType loadXml(@Nonnull final XmlParser parser) throws Exception { if (type == null) { throw new Exception("The type is null, something is wrong."); } Type t = getType(type); XmlProcessorType xmlType = t.createXmlProcessor(this); parser.nextTag(); if (root == null) { throw new Exception("Root element is not set."); } parser.required(root, xmlType); XmlType result = xmlType.getXmlType(); if (result == null) { throw new Exception("Failed to resolve XML data to a proper XML type."); } return result; }
public void registerSchema( @Nonnull final String schemaId, @Nonnull @WillClose final InputStream inputStreamSchema) throws Exception { try { Schema niftyXmlSchema = new Schema(parserFactory, nifty.getResourceLoader()); XmlParser parser = new XmlParser(parserFactory.newPullParser()); parser.read(inputStreamSchema); parser.nextTag(); parser.required("nxs", niftyXmlSchema); schemes.put(schemaId, niftyXmlSchema); } finally { closeSilently(inputStreamSchema); } }
@Override public void process( @Nonnull final XmlParser xmlParser, @Nonnull final Attributes attributes) throws Exception { String filename = attributes.get("filename"); if (filename == null) { return; } Schema niftyXmlSchema = new Schema(parserFactory, resourceLoader); XmlParser parser = new XmlParser(parserFactory.newPullParser()); InputStream stream = resourceLoader.getResourceAsStream(filename); if (stream != null) { try { parser.read(stream); parser.nextTag(); parser.required("nxs", niftyXmlSchema); types.putAll(niftyXmlSchema.getTypes()); xmlParser.nextTag(); } finally { try { stream.close(); } catch (IOException ignored) {} } } } }
public void process( @Nonnull final XmlParser xmlParser, @Nonnull final XmlType xmlTypeParent) throws Exception { if (elementOccurs.equals(OccursEnum.required)) { elementProcessor.parentLinkSet(xmlTypeParent, elementName); xmlParser.required(elementName, elementProcessor); } else if (elementOccurs.equals(OccursEnum.oneOrMore)) { elementProcessor.parentLinkAdd(xmlTypeParent, elementName); xmlParser.oneOrMore(elementName, elementProcessor); } else if (elementOccurs.equals(OccursEnum.optional)) { elementProcessor.parentLinkSet(xmlTypeParent, elementName); xmlParser.optional(elementName, elementProcessor); } else if (elementOccurs.equals(OccursEnum.zeroOrMore)) { elementProcessor.parentLinkAdd(xmlTypeParent, elementName); xmlParser.zeroOrMore(elementName, elementProcessor); } }