XMLport - Import and XMLport have same structure but error

samemerysamemery Member Posts: 60
Hi,

The error I receive is "The element <int> is expected by the Min Occurs value: Once. Element recieved: <struct>."

I have checked all the import files <struct> nodes and have found that they are in the same structured as my XMLport. Any other things I can check to fix this error?

Thank you,
Sam

Comments

  • ara3nara3n Member Posts: 9,256
    Could you put a screenshot of your xmlport and the xmlfile?

    Also did you try and use the xmlportgenerator? It automatically creates the xmlport based on your xml file. It's in the download section.
    Ahmed Rashed Amini
    Independent Consultant/Developer


    blog: https://dynamicsuser.net/nav/b/ara3n
  • samemerysamemery Member Posts: 60
    edited 2011-03-14
    Hi,

    Thank you in advance. I tried to use the XMLport generator but it wouldn't load any root elements to choose from and I got an error saying:

    "Unhandled exception has occurred in your application. If you click continue, the application will ignore this error and attempt to continue. If you click Quit, the application will close immediately. Object reference not set to an instance of an object."

    Attached is the beginning of my XMLport and my XML schema is here:

    <?xml version="1.0"?>
    <methodCall>
    <methodName>send_ready_orders</methodName>
    <params>
    <param>
    <value><int>1</int></value>
    </param>
    <param>
    <value>
    <struct><member><name>order_0</name>
    <value><struct>
    <member><name>order_id</name>
    <value><int>4404576</int></value>
    </member>
    <member><name>order_date</name>
    <value><string>2011-02-02</string></value>
    </member>
    <member><name>mfg_id</name>
    <value><int>3969</int></value>
    </member>
    <member><name>catalog_id</name>
    <value><int>1</int></value>
    </member>
    <member><name>first_name</name>
    <value><string>Implementation</string></value>
    </member>
    <member><name>last_name</name>
    <value><string>Team</string></value>
    </member>
    <member><name>recipient</name>
    <value><string></string></value>
    </member>
    <member><name>message</name>
    <value><string></string></value>
    </member>
    <member><name>address1</name>
    <value><string>Post Office Box 5555</string></value>
    </member>
    <member><name>address2</name>
    <value><string></string></value>
    </member>
    <member><name>address3</name>
    <value><string></string></value>
    </member>
    <member><name>city</name>
    <value><string>Test City</string></value>
    </member>
    <member><name>state</name>
    <value><string>CA</string></value>
    </member>
    <member><name>zip</name>
    <value><string>44444</string></value>
    </member>
    <member><name>country</name>
    <value><string>United States of America</string></value>
    </member>
    <member><name>country_code</name>
    <value><string>US</string></value>
    </member>
    <member><name>phone</name>
    <value><string>444-444-4444</string></value>
    </member>
    <member><name>subtotal</name>
    <value><double>149.99</double></value>
    </member>
    <member><name>shipping</name>
    <value><double>0</double></value>
    </member>
    <member><name>fulfiller_shipping</name>
    <value><double>0</double></value>
    </member>
    <member><name>tax</name>
    <value><double>14.62</double></value>
    </member>
    <member><name>fulfiller_tax</name>
    <value><double>14.1814</double></value>
    </member>
    <member><name>package_fee</name>
    <value><double>0.75</double></value>
    </member>
    <member><name>total</name>
    <value><double>164.61</double></value>
    </member>
    <member><name>fulfiller_total</name>
    <value><double>153.07</double></value>
    </member>
    <member><name>total</name>
    <value><double>11.54</double></value>
    </member>
    <member><name>shipment_id</name>
    <value><int>3126504</int></value>
    </member>
    <member><name>currency_id</name>
    <value><int>1</int></value>
    </member>
    <member><name>language_id</name>
    <value><int>1</int></value>
    </member>
    <member><name>cust_comments</name>
    <value><string>TEST ORDER - DO NOT PROCESS</string></value>
    </member>
    <member><name>ship_type</name>
    <value><string>standard</string></value>
    </member>
    <member><name>packing_list</name>
    <value><string></string></value>
    </member>
    <member><name>num_items</name>
    <value><int>1</int></value>
    </member>
    <member><name>items</name>
    <value><struct>
    <member><name>item_1</name>
    <value><struct>
    <member><name>item_id</name>
    <value><int>6045134</int></value>
    </member>
    <member><name>part_number</name>
    <value><string>COBO-2011-20-B</string></value>
    </member>
    <member><name>quantity</name>
    <value><int>1</int></value>
    </member>
    <member><name>price</name>
    <value><double>149.99</double></value>
    </member>
    <member><name>fulfiller_total</name>
    <value><double>153.8314</double></value>
    </member>
    <member><name>_total</name>
    <value><double>10.7851</double></value>
    </member>
    <member><name>line_item_tax</name>
    <value><double>14.62</double></value>
    </member>
    <member><name>line_item_subtotal</name>
    <value><double>149.99</double></value>
    </member>
    <member><name>line_discount</name>
    <value><double>0</double></value>
    </member>
    <member><name>options</name>
    <value><struct>
    <member><name>option_1</name>
    <value><string>Color: Blue</string></value>
    </member>
    </struct></value>
    </member>
    </struct></value>
    </member>
    </struct></value>
    </member>
    </struct></value>
    </member>
    </struct>
    </value>
    </param>
    </params>
    </methodCall>
  • ara3nara3n Member Posts: 9,256
    you have two child elements <Param> line 4 and 7. And Xmlport cannot distinguish them. Thus it thinks that on second <Param> after Value it should be int.

    What you need to do is load the xml in MSXMLDOM. If you need the first param, change the name in MSXMLDOM to something else then load it to xmlport. Otherwise if you don't need the first <Param> element, delete it and then load the xml to XMLPORT.


    The way it's currently setup you cannot import it using XMLPORT.
    Ahmed Rashed Amini
    Independent Consultant/Developer


    blog: https://dynamicsuser.net/nav/b/ara3n
  • samemerysamemery Member Posts: 60
    Hi,

    Thank you for your responses. Is there a page I where I could learn how to use MSXMLDOM? I have no idea what it is and would like to see how to use it. Thank you.
  • ara3nara3n Member Posts: 9,256
    here is a link

    http://msdn.microsoft.com/en-us/library/aa468547.aspx


    There is also a NA V CU 6224 "XML DOM Management" That you can take a look.


    Your code will look like this if you don' t need that element.


    CLEAR(XMLDoc);
    IF ISCLEAR(XMLDoc) THEN
      CREATE(XMLDoc);
    XMLDoc.async(FALSE);
    XMLDoc.load('C:\Temp\YourXMLFile.xml');
    
    
    IF NOT FindNode(XMLDoc,'MethodCall/Params/Param',XMLNode) THEN
      ERROR('Could not find the node');
    
    IF NOT FindNode(XMLDoc,''MethodCall/Params',XMLNodeChild) THEN
      ERROR('Could not find the node');
    
    XMLNode.removeChild(XMLNOdeChild);
    
    XMLDoc.save('c:\Temp\NewXML.xml');
    

    Then run your xmlport

    I have not tested this. But it should give you an idea on what to do.
    Ahmed Rashed Amini
    Independent Consultant/Developer


    blog: https://dynamicsuser.net/nav/b/ara3n
Sign In or Register to comment.