Details

    • Type: Bug Bug
    • Status: Open
    • Priority: Critical Critical
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: XmlObject
    • Labels:
      None
    • Environment:
      XP Professional

      Description

      Trying to insert XML data into an existing XML document. Success of this operation appears to be dependant on the size of data held in the nested XML child elements. Operation works fine up to a certain size with nested XML correctly wrapped within CDATA. However, if child elements are over a certain size then nested XML is not recognised as CDATA and the <> chars are escaped, causing parsing problems further down the line.

      For an example I have used the EasyPO xsd as provided on the XMLBeans website, and adding the folowing data as my nested XML:

      SUCCESSFUL RUN

      <nestedXML>
      <testData>
      <textDataOne>hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world </textDataOne>
      <sizeTextDataOne>324 bytes</sizeTextDataOne>
      <textDataTwo>hello</textDataTwo>
      <sizeTextDataTwo>5 bytes</sizeTextDataTwo>
      </testData>
      </nestedXML>

      Output as follows:

      <?xml version="1.0" encoding="UTF-8"?>
      <purchase-order xmlns="http://openuri.org/easypo">
      <customer>
      <name>Gladys Kravitz</name>
      <address>Anytown, PA</address>
      </customer>
      <date>2003-01-07T14:16:00-05:00</date>
      <line-item>
      <description>Burnham's Celestial Handbook, Vol 1</description>
      <per-unit-ounces>5</per-unit-ounces>
      <price>21.79</price>
      <quantity>2</quantity>
      </line-item>
      <line-item>
      <description>Burnham's Celestial Handbook, Vol 2</description>
      <per-unit-ounces>5</per-unit-ounces>
      <price>19.89</price>
      <quantity>2</quantity>
      </line-item>
      <line-item><description><![CDATA[<nestedXML>
      <testData>
      <textDataOne>hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world </textDataOne>
      <sizeTextDataOne>324 bytes</sizeTextDataOne>
      <textDataTwo>hello</textDataTwo>
      <sizeTextDataTwo>5 bytes</sizeTextDataTwo>
      </testData>
      </nestedXML>]]></description></line-item><shipper>
      <name>ZipShip</name>
      <per-ounce-rate>0.74</per-ounce-rate>
      </shipper>
      </purchase-order>

      UNSUCCESSFUL RUN

      <nestedXML>
      <testData>
      <textDataOne>hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world </textDataOne>
      <sizeTextDataOne>324 bytes</sizeTextDataOne>
      <textDataTwo>hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world </textDataTwo>
      <sizeTextDataTwo>324 bytes</sizeTextDataTwo>
      </testData>
      </nestedXML>

      Output as follows:

      <?xml version="1.0" encoding="UTF-8"?>
      <purchase-order xmlns="http://openuri.org/easypo">
      <customer>
      <name>Gladys Kravitz</name>
      <address>Anytown, PA</address>
      </customer>
      <date>2003-01-07T14:16:00-05:00</date>
      <line-item>
      <description>Burnham's Celestial Handbook, Vol 1</description>
      <per-unit-ounces>5</per-unit-ounces>
      <price>21.79</price>
      <quantity>2</quantity>
      </line-item>
      <line-item>
      <description>Burnham's Celestial Handbook, Vol 2</description>
      <per-unit-ounces>5</per-unit-ounces>
      <price>19.89</price>
      <quantity>2</quantity>
      </line-item>
      <line-item><description><nestedXML>
      <testData>
      <textDataOne>hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world </textDataOne>
      <sizeTextDataOne>324 bytes</sizeTextDataOne>
      <textDataTwo>hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world </textDataTwo>
      <sizeTextDataTwo>324 bytes</sizeTextDataTwo>
      </testData>
      </nestedXML></description></line-item><shipper>
      <name>ZipShip</name>
      <per-ounce-rate>0.74</per-ounce-rate>
      </shipper>
      </purchase-order>

      Example code used:

      import java.io.File;
      import java.io.IOException;

      import org.apache.xmlbeans.XmlException;
      import org.apache.xmlbeans.XmlObject;
      import org.openuri.easypo.LineItem;
      import org.openuri.easypo.PurchaseOrderDocument;

      /**

      • @author
        *
        */
        public class XMLBeanTester
        {

      /**

      • @param args
        */
        public static void main(String[] args) { new XMLBeanTester().testXMLBeans(); }

      public void testXMLBeans()
      {
      File xmlFile = new File("myPO.xml");
      String test_XML_data = "nested_xml.xml";

      try

      { PurchaseOrderDocument PODoc = PurchaseOrderDocument.Factory.parse(xmlFile); XmlObject xml = XmlObject.Factory.parse(new File(test_XML_data)); LineItem item = PODoc.getPurchaseOrder().addNewLineItem(); item.setDescription(xml.xmlText()); PODoc.save(new File("myNewPO.xml")); }

      catch (XmlException e)

      { System.out.println("XML Problem:- "); e.printStackTrace(); }

      catch (IOException e)

      { System.out.println("IO Problem:- "); e.printStackTrace(); }

      }
      }

      Is this a known bug or I am I missing something fundamental (quite possible!)? Any input will be appreciated as this is now having a serious impact on our project.

        Activity

        Hide
        Cezar Andrei added a comment -

        Keith,

        Please don't forget that this project is based only on voluntary work, so contributors chose what are they working on and what questions will answer.

        Please check the archives of dev and user mailing lists since this was discused quite a few times.

        The bugs are filled to track issues, to disscuse problems, come up with ideas for solving and to submit patches for fixing them.

        Cezar

        Show
        Cezar Andrei added a comment - Keith, Please don't forget that this project is based only on voluntary work, so contributors chose what are they working on and what questions will answer. Please check the archives of dev and user mailing lists since this was discused quite a few times. The bugs are filled to track issues, to disscuse problems, come up with ideas for solving and to submit patches for fixing them. Cezar
        Hide
        Keith Daurs added a comment -

        Thanks for looking at this one - not!!! Got over the problem by encoding the nested XML but still consider it an issue for other XML Beans users in the future.

        So how does this reporting of bugs work? Why is ths one still unassigned? Did no one fancy tackling it? What is the point of reporting it and declaring a priority if no one bothers to even look at it?

        Even an update on screen to say you hadn't got time would have been useful.

        Ho-hum!

        Show
        Keith Daurs added a comment - Thanks for looking at this one - not!!! Got over the problem by encoding the nested XML but still consider it an issue for other XML Beans users in the future. So how does this reporting of bugs work? Why is ths one still unassigned? Did no one fancy tackling it? What is the point of reporting it and declaring a priority if no one bothers to even look at it? Even an update on screen to say you hadn't got time would have been useful. Ho-hum!

          People

          • Assignee:
            Cezar Andrei
            Reporter:
            Keith Daurs
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:

              Development