Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF » (no subject)
(no subject) [message #687019] Mon, 23 May 2011 05:06 Go to next message
javen jia is currently offline javen jiaFriend
Messages: 7
Registered: December 2009
Junior Member
I get the xml content with the following code.
code:

EPackage poPackage = EcoreFactory.eINSTANCE.createEPackage();
EFactory eFactory=poPackage.getEFactoryInstance();

EClass purchaseOrderClass = EcoreFactory.eINSTANCE.createEClass();
purchaseOrderClass.setName("PurchaseOrder");
poPackage.getEClassifiers().add(purchaseOrderClass);

EClass itemClass = EcoreFactory.eINSTANCE.createEClass();
itemClass.setName("Item");
poPackage.getEClassifiers().add(itemClass);

EAttribute nameAttribute =
EcoreFactory.eINSTANCE.createEAttribute();
nameAttribute.setName("name");
nameAttribute.setEType(EcorePackage.eINSTANCE.getEString());
itemClass.getEStructuralFeatures().add(nameAttribute);

EAttribute shipToAttribute =
EcoreFactory.eINSTANCE.createEAttribute();
shipToAttribute.setName("shipTo");
shipToAttribute.setEType(EcorePackage.eINSTANCE.getEString());
purchaseOrderClass.getEStructuralFeatures().add(shipToAttribute);

EReference eReference = EcoreFactory.eINSTANCE.createEReference();
eReference.setName("items");
eReference.setEType(itemClass);
eReference.setUpperBound(ETypedElement.UNBOUNDED_MULTIPLICITY);
eReference.setContainment(true);
purchaseOrderClass.getEStructuralFeatures().add(eReference);


EObject order = eFactory.create((EClass)(poPackage.getEClassifier("PurchaseOrder")));
order.eSet(order.eClass().getEStructuralFeature("shipTo"), "there");
EObject item1 = eFactory.create((EClass)(poPackage.getEClassifier("Item")));
item1.eSet(item1.eClass().getEStructuralFeature("name"), "item1");
((List)order.eGet(eReference)).add(item1);
EObject item2 = eFactory.create((EClass)(poPackage.getEClassifier("Item")));
item2.eSet(item2.eClass().getEStructuralFeature("name"), "item2");
((List)order.eGet(eReference)).add(item2);


final ExtendedMetaData data=new BasicExtendedMetaData(ExtendedMetaData.ANNOTATION_URI,EPackage.Registry.INSTANCE,new HashMap());
data.setFeatureKind(eReference, ExtendedMetaData.ELEMENT_FEATURE);
//data.setFeatureKind(nameAttribute, ExtendedMetaData.ELEMENT_FEATURE);
data.setGroup(eReference, eReference);
data.setName(purchaseOrderClass, "poo");

Map options=new HashMap();
options.put(XMIResource.OPTION_EXTENDED_META_DATA, data);

ResourceSet resourceSet = new ResourceSetImpl();
resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("xml",new XMIResourceFactoryImpl());
URI fileURI = URI.createFileURI(new File("d:/temp/mypo.xml").getAbsolutePath());
Resource poResource = resourceSet.createResource(fileURI);
poResource.getContents().add(order);
try {
poResource.save(options);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

the result Xml is

<?xml version="1.0" encoding="ASCII"?>
<poo xmi:version="2.0" xmlns:xmi="" shipTo="there">
<items name="item1"/>
<items name="item2"/>
</poo>


but i need the xml like


<?xml version="1.0" encoding="ASCII"?>
<poo xmi:version="2.0" xmlns:xmi="" shipTo="there">
<items>
<item name="item1"/>
<item name="item2"/>
</items>
</poo>


Thanks!!!!!!!!!!!!!!!
Re: How To Persistence Eobject [message #687023 is a reply to message #687019] Mon, 23 May 2011 07:27 Go to previous messageGo to next message
Eike Stepper is currently offline Eike StepperFriend
Messages: 6682
Registered: July 2009
Senior Member
Am 23.05.2011 07:06, schrieb javen jia:
> the result Xml is
>
> <?xml version="1.0" encoding="ASCII"?>
> <poo xmi:version="2.0" xmlns:xmi="" shipTo="there">
> <items name="item1"/>
> <items name="item2"/>
> </poo>
You probably also want to avoid the term "poo" after you've looked it up in a dictionary :P

Cheers
/Eike

----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper


Re: How To Persistence Eobject [message #687026 is a reply to message #687019] Mon, 23 May 2011 16:26 Go to previous message
Ed Merks is currently offline Ed MerksFriend
Messages: 33140
Registered: July 2009
Senior Member
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=UTF-8" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
A valid XMI serialization must use the xmi prefix on the root
element.   Maybe you want to try XM<b>L</b>ResourceFactoryImpl.<br>
<br>
javen jia wrote:
<blockquote cite="mid:ircpgl$11d$1@news.eclipse.org" type="cite">I get
the xml content with the following code.
<br>
code:
<br>
<br>
EPackage poPackage = EcoreFactory.eINSTANCE.createEPackage();
<br>
        EFactory eFactory=poPackage.getEFactoryInstance();
<br>
<br>
        EClass purchaseOrderClass =
EcoreFactory.eINSTANCE.createEClass();
<br>
        purchaseOrderClass.setName("PurchaseOrder");
<br>
        poPackage.getEClassifiers().add(purchaseOrderClass);
<br>
<br>
        EClass itemClass = EcoreFactory.eINSTANCE.createEClass();
<br>
        itemClass.setName("Item");
<br>
        poPackage.getEClassifiers().add(itemClass);
<br>
        <br>
        EAttribute nameAttribute =
<br>
              EcoreFactory.eINSTANCE.createEAttribute();
<br>
        nameAttribute.setName("name");
<br>
        nameAttribute.setEType(EcorePackage.eINSTANCE.getEString());
<br>
        itemClass.getEStructuralFeatures().add(nameAttribute);
<br>
<br>
        EAttribute shipToAttribute =
<br>
          EcoreFactory.eINSTANCE.createEAttribute();
<br>
        shipToAttribute.setName("shipTo");
<br>
        shipToAttribute.setEType(EcorePackage.eINSTANCE.getEString());
<br>
       
purchaseOrderClass.getEStructuralFeatures().add(shipToAttribute);
<br>
        <br>
        EReference eReference =
EcoreFactory.eINSTANCE.createEReference();
<br>
        eReference.setName("items");
<br>
        eReference.setEType(itemClass);
<br>
        eReference.setUpperBound(ETypedElement.UNBOUNDED_MULTIPLICITY);
<br>
        eReference.setContainment(true);
<br>
        purchaseOrderClass.getEStructuralFeatures().add(eReference);
<br>
        <br>
        <br>
        EObject order =
eFactory.create((EClass)(poPackage.getEClassifier("PurchaseOrder")));
<br>
        order.eSet(order.eClass().getEStructuralFeature("shipTo"),
"there");
<br>
        EObject item1 =
eFactory.create((EClass)(poPackage.getEClassifier("Item")));
<br>
        item1.eSet(item1.eClass().getEStructuralFeature("name"),
"item1");
<br>
        ((List)order.eGet(eReference)).add(item1);
<br>
        EObject item2 =
eFactory.create((EClass)(poPackage.getEClassifier("Item")));
<br>
        item2.eSet(item2.eClass().getEStructuralFeature("name"),
"item2");
<br>
        ((List)order.eGet(eReference)).add(item2);
<br>
        <br>
        <br>
        final ExtendedMetaData data=new
BasicExtendedMetaData(ExtendedMetaData.ANNOTATION_URI,EPackage.Registry.INSTANCE,new
HashMap());
<br>
        data.setFeatureKind(eReference,
ExtendedMetaData.ELEMENT_FEATURE);
<br>
        //data.setFeatureKind(nameAttribute,
ExtendedMetaData.ELEMENT_FEATURE);
<br>
        data.setGroup(eReference, eReference);
<br>
        data.setName(purchaseOrderClass, "poo");
<br>
    
<br>
        Map options=new HashMap();
<br>
        options.put(XMIResource.OPTION_EXTENDED_META_DATA, data);
<br>
        <br>
        ResourceSet resourceSet = new ResourceSetImpl();
<br>
       
resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("xml",new
XMIResourceFactoryImpl());
<br>
        URI fileURI = URI.createFileURI(new
File("d:/temp/mypo.xml").getAbsolutePath());
<br>
        Resource poResource = resourceSet.createResource(fileURI);
<br>
        poResource.getContents().add(order);
<br>
        try {
<br>
            poResource.save(options);
<br>
        } catch (IOException e) {
<br>
            // TODO Auto-generated catch block
<br>
            e.printStackTrace();
<br>
        }
<br>
<br>
the result Xml is
<br>
<br>
&lt;?xml version="1.0" encoding="ASCII"?&gt;
<br>
&lt;poo xmi:version="2.0" xmlns:xmi="" shipTo="there"&gt;
<br>
 &lt;items name="item1"/&gt;
<br>
 &lt;items name="item2"/&gt;
<br>
&lt;/poo&gt;
<br>
<br>
<br>
but i need the xml  like <br>
<br>
&lt;?xml version="1.0" encoding="ASCII"?&gt;
<br>
&lt;poo xmi:version="2.0" xmlns:xmi="" shipTo="there"&gt;
<br>
 &lt;items&gt;
<br>
    &lt;item name="item1"/&gt;
<br>
     &lt;item name="item2"/&gt;
<br>
 &lt;/items&gt;
<br>
&lt;/poo&gt;
<br>
<br>
<br>
Thanks!!!!!!!!!!!!!!!
<br>
<br>
</blockquote>
</body>
</html>


Ed Merks
Professional Support: https://www.macromodeling.com/
Previous Topic:ClassCastException in changing the input of TreeViewer
Next Topic:Ecore to Schema -> how to get IDREF?
Goto Forum:
  


Current Time: Thu Apr 25 11:14:17 GMT 2024

Powered by FUDForum. Page generated in 0.03416 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top