Uploaded image for project: 'XMLBeans'
  1. XMLBeans
  2. XMLBEANS-579

SampleXmlUtil misses root element with only one child

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • Version 5.0.1
    • Version 5.0.3
    • None
    • None

    Description

      When generating a sample, usually the top-level-element is xml-fragment. But when the type contains only one child-element, it becomes the root.

      import org.apache.xmlbeans.SchemaTypeSystem;
      import org.apache.xmlbeans.XmlBeans;
      import org.apache.xmlbeans.XmlException;
      import org.apache.xmlbeans.XmlObject;
      import org.apache.xmlbeans.XmlOptions;
      import org.apache.xmlbeans.impl.xb.xsdschema.SchemaDocument;
      import org.apache.xmlbeans.impl.xsd2inst.SampleXmlUtil;
      
      public class SchemaTest {
      
      	private static String generateXml(String xsdString) throws XmlException {
      		XmlOptions options = new XmlOptions().setDocumentSourceName("a.xsd");
      		XmlObject xsd = SchemaDocument.Factory.parse(xsdString, options);
      		SchemaTypeSystem schema = XmlBeans.compileXsd(new XmlObject[] { xsd }, XmlBeans.getBuiltinTypeSystem(), options);
      		return SampleXmlUtil.createSampleForType(schema.globalElements()[0].getType());
      	}
      
      	public static void main(String[] args) throws Exception {
      		String xml = generateXml(
      				"<?xml version=\"1.0\" encoding=\"utf-8\"?><schema elementFormDefault=\"qualified\" targetNamespace=\"x\" xmlns=\"http://www.w3.org/2001/XMLSchema\">"
      						+ "	<element name=\"a\">" //
      						+ "		<complexType><sequence>" //
      						+ "			<element name=\"b\"><complexType><sequence>" //
      						+ "				<element name=\"c\" type=\"string\" />" //
      						+ "			</sequence></complexType></element>" //
      						+ "		</sequence></complexType>" //
      						+ "	</element>" //
      						+ "</schema>");
      		System.out.println(xml);
      	}
      }
      

      Generates:

      <x:b xmlns:x="x">
        <x:c>string</x:c>
      </x:b>
      

      Expected:

      <xml-fragment xmlns:x="x">
        <x:b>
          <x:c>string</x:c>
        </x:b>
      </xml-fragment>
      

      Attachments

        Activity

          People

            pj.fanning PJ Fanning
            a.pinske Alexander Pinske
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Time Tracking

                Estimated:
                Original Estimate - Not Specified
                Not Specified
                Remaining:
                Remaining Estimate - 0h
                0h
                Logged:
                Time Spent - 10m
                10m