I got something working. It's not perfect.. but for a sample that's fine.
This code will list the elements that are not in the schema package ca.sebastiendionne.upnp.device; import java.io.File; import org.apache.xmlbeans.QNameSet; import org.apache.xmlbeans.SchemaProperty; import org.apache.xmlbeans.SchemaType; import org.apache.xmlbeans.XmlObject; import org.apache.xmlbeans.impl.values.XmlAnyTypeImpl; import org.upnp.schemas.device_1_0.RootDocument; import org.w3c.dom.Attr; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class ExtraTagsDeviceTest { public static void main(String[] args) throws Exception { ExtraTagsDeviceTest mod = new ExtraTagsDeviceTest(); mod.go(); } public void browse(XmlObject xo, NodeList childList) { for (int i = 0; i < childList.getLength(); i++) { Node node = childList.item(i); if (node.getNodeType() == Node.ELEMENT_NODE) { boolean isInXsd = isAttributeInSchema(xo, node.getLocalName()); if (!isInXsd) { System.out.println("element name=" + node.getLocalName() + " IS IN SCHEMA=" + isInXsd); System.out.println("Node Name: " + node.getNodeName()); System.out.println("Node NS: " + node.getNamespaceURI() + "-" + node.getNodeValue()); System.out.println("Attributes: "); NamedNodeMap nnm = node.getAttributes(); if (nnm != null) { int len = nnm.getLength(); Attr attr; for (int j = 0; j < len; j++) { attr = (Attr) nnm.item(j); System.out.println("\t " + attr.getNodeName() + "=\"" + attr.getNodeValue() + '"'); } } System.out.println("End of Attributes"); NodeList list = node.getChildNodes(); if (list.getLength() == 1) { System.out.println("Value=" + list.item(0).getNodeValue()); } } } } } public boolean editExistingDocWithDOM(XmlObject xo) { NodeList childList = xo.getDomNode().getChildNodes(); browse(xo, childList); return true; } private void go() throws Exception { RootDocument atd = RootDocument.Factory.parse(new File("./src/test/resources/device2.xml")); editExistingDocWithDOM(atd.getRoot().getDevice()); } private static boolean isAttributeInSchema(XmlObject xo, String name) { boolean ret = false; SchemaType xoSt = xo.schemaType(); SchemaProperty[] xoSps = xoSt.getElementProperties(); if (xoSps.length > 0) { for (int i = 0; i < xoSps.length; i++) { SchemaProperty xoSp = xoSps[i]; if (xoSp.getName().getLocalPart().equals(name)) { ret = true; break; } } } return ret; } } ------------- A+ Sébastien. Vous pouvez me suivre sur Twitter / You can follow me on Twitter : http://twitter.com/survivant