// read all defense missile from given defense destructor protected void readDefenseDestructorFromGivenDestructor(Element destructor) { NamedNodeMap attributes = destructor.getAttributes(); String id = ""; String type; Attr attr = (Attr) attributes.item(0); String name = attr.getNodeName(); // if it's iron dome if (name.equals("id")) { id = attr.getNodeValue(); // update id's in the war IdGenerator.updateIronDomeId(id); // add to war war.addIronDome(id); NodeList destructdMissiles = destructor.getElementsByTagName("destructdMissile"); readDefensDestructoreMissiles(destructdMissiles, id); // if it's launcher destructor } else { if (name.equals("type")) { type = attr.getNodeValue(); // add to war id = war.addDefenseLauncherDestructor(type); NodeList destructedLanuchers = destructor.getElementsByTagName("destructedLanucher"); readDefensDestructoreMissiles(destructedLanuchers, id); } } }
/** * Reads the children of an XML element and matches them to properties of a bean. * * @param ob The bean to receive the values * @param element The element the corresponds to the bean * @throws IOException If there is an error reading the document */ public void readObject(Object ob, Element element) throws IOException { // If the object is null, skip the element if (ob == null) { return; } try { BeanInfo info = (BeanInfo) beanCache.get(ob.getClass()); if (info == null) { // Get the bean info for the object info = Introspector.getBeanInfo(ob.getClass(), Object.class); beanCache.put(ob.getClass(), info); } // Get the object's properties PropertyDescriptor[] props = info.getPropertyDescriptors(); // Get the attributes of the node NamedNodeMap attrs = element.getAttributes(); // Get the children of the XML element NodeList nodes = element.getChildNodes(); int numNodes = nodes.getLength(); for (int i = 0; i < props.length; i++) { // Treat indexed properties a little differently if (props[i] instanceof IndexedPropertyDescriptor) { readIndexedProperty(ob, (IndexedPropertyDescriptor) props[i], nodes, attrs); } else { readProperty(ob, props[i], nodes, attrs); } } } catch (IntrospectionException exc) { throw new IOException( "Error getting bean info for " + ob.getClass().getName() + ": " + exc.toString()); } }