Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[XML - DOM] getElementById

2 réponses
Avatar
Guillaume CABANAC
Bonjour,

J'utilise DOM pour parser un fichier XMI et je souhaiterais "résoudre
les références". J'ai trouvé dans la Javadoc qu'on peut le faire grâce à la
méthode getElementById(String elementId) de la classe Document.
J'ai passé à la méthode parse le nom de l'attribut "xmi.id"... Malgré
tout cela, je n'arrive pas à obtenir l'element d'identifiant donné... Si
vous pouviez me dire à quel moment je pars dans le mur...
Mieux vaut du code que des explications hasardeuses...

Merci d'avance.
Guilaume Cabanac

--------------------- Mon bout de code
Java ----------------------------------------------
import java.io.FileInputStream;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;

public class TestGetElementById
{
public TestGetElementById(FileInputStream ficXml) throws Exception
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance() ;
DocumentBuilder builder = factory.newDocumentBuilder() ;

Document doc = builder.parse(ficXml, "xmi.id") ;

Element e = doc.getElementById("xmi.1") ;
System.out.println("getElementById: "+e) ; // ICI J'OBTIENS NULL :(((
}

/**
* Point d'entrée de l'application
* @param args : 1 seul paramètre, le nom du fichier
*/
public static void main(String[] args) throws Exception
{
if(args.length != 1)
{
System.err.println("usage : Xmi2useDom fichier.xmi") ;
System.exit(1) ;
}
System.out.println("TestGetElementById") ;
new TestGetElementById(new FileInputStream(args[0])) ;
}
}

------------------ Le fichier XMI ------------------------

<?xml version="1.0" encoding="UTF-8"?>

<XMI xmi.version="1.0">

<XMI.header>

<XMI.documentation>

<XMI.exporter>Novosoft UML Library</XMI.exporter>

<XMI.exporterVersion>0.4.19</XMI.exporterVersion>

</XMI.documentation>

<XMI.metamodel xmi.name="UML" xmi.version="1.3"/>

</XMI.header>

<XMI.content>

<Model_Management.Model xmi.id="xmi.1"
xmi.uuid="-61--36-60-11-269997:faf5d4bc71:-8000">

<Foundation.Core.ModelElement.name>ex1</Foundation.Core.ModelElement.name>

<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>

<Foundation.Core.Namespace.ownedElement>

<Foundation.Core.Class xmi.id="xmi.2"
xmi.uuid="-61--36-60-11-269997:faf5d4bc71:-7ffe">

<Foundation.Core.ModelElement.name>Personne</Foundation.Core.ModelElement.na
me>

<Foundation.Core.ModelElement.visibility xmi.value="public"/>

<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>

<Foundation.Core.Class.isActive xmi.value="false"/>

<Foundation.Core.ModelElement.namespace>

<Foundation.Core.Namespace xmi.idref="xmi.1"/>

</Foundation.Core.ModelElement.namespace>

<Foundation.Core.Classifier.feature>

<Foundation.Core.Attribute xmi.id="xmi.3"
xmi.uuid="-61--36-60-11-269997:faf5d4bc71:-7ffb">

<Foundation.Core.ModelElement.name>nom</Foundation.Core.ModelElement.name>

<Foundation.Core.ModelElement.visibility xmi.value="public"/>

<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>

<Foundation.Core.Feature.ownerScope xmi.value="instance"/>

<Foundation.Core.StructuralFeature.multiplicity>

<Foundation.Data_Types.Multiplicity xmi.id="xmi.4">

<Foundation.Data_Types.Multiplicity.range>

<Foundation.Data_Types.MultiplicityRange xmi.id="xmi.5">

<Foundation.Data_Types.MultiplicityRange.lower>1</Foundation.Data_Types.Mult
iplicityRange.lower>

<Foundation.Data_Types.MultiplicityRange.upper>1</Foundation.Data_Types.Mult
iplicityRange.upper>

</Foundation.Data_Types.MultiplicityRange>

</Foundation.Data_Types.Multiplicity.range>

</Foundation.Data_Types.Multiplicity>

</Foundation.Core.StructuralFeature.multiplicity>

<Foundation.Core.StructuralFeature.changeability xmi.value="changeable"/>

<Foundation.Core.StructuralFeature.targetScope xmi.value="instance"/>

<Foundation.Core.Feature.owner>

<Foundation.Core.Classifier xmi.idref="xmi.2"/>

</Foundation.Core.Feature.owner>

<Foundation.Core.StructuralFeature.type>

<Foundation.Core.Classifier xmi.idref="xmi.6"/>

</Foundation.Core.StructuralFeature.type>

<Foundation.Core.ModelElement.taggedValue>

<Foundation.Extension_Mechanisms.TaggedValue xmi.id="xmi.7">

<Foundation.Extension_Mechanisms.TaggedValue.tag>transient</Foundation.Exten
sion_Mechanisms.TaggedValue.tag>

<Foundation.Extension_Mechanisms.TaggedValue.value>false</Foundation.Extensi
on_Mechanisms.TaggedValue.value>

<Foundation.Extension_Mechanisms.TaggedValue.modelElement>

<Foundation.Core.ModelElement xmi.idref="xmi.3"/>

</Foundation.Extension_Mechanisms.TaggedValue.modelElement>

</Foundation.Extension_Mechanisms.TaggedValue>

<Foundation.Extension_Mechanisms.TaggedValue xmi.id="xmi.8">

<Foundation.Extension_Mechanisms.TaggedValue.tag>volatile</Foundation.Extens
ion_Mechanisms.TaggedValue.tag>

<Foundation.Extension_Mechanisms.TaggedValue.value>false</Foundation.Extensi
on_Mechanisms.TaggedValue.value>

<Foundation.Extension_Mechanisms.TaggedValue.modelElement>

<Foundation.Core.ModelElement xmi.idref="xmi.3"/>

</Foundation.Extension_Mechanisms.TaggedValue.modelElement>

</Foundation.Extension_Mechanisms.TaggedValue>

</Foundation.Core.ModelElement.taggedValue>

</Foundation.Core.Attribute>

<Foundation.Core.Attribute xmi.id="xmi.9"
xmi.uuid="-61--36-60-11-269997:faf5d4bc71:-7ff5">

<Foundation.Core.ModelElement.name>prenom</Foundation.Core.ModelElement.name
>

<Foundation.Core.ModelElement.visibility xmi.value="public"/>

<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>

<Foundation.Core.Feature.ownerScope xmi.value="instance"/>

<Foundation.Core.StructuralFeature.multiplicity>

<Foundation.Data_Types.Multiplicity xmi.idref="xmi.4"/>

</Foundation.Core.StructuralFeature.multiplicity>

<Foundation.Core.StructuralFeature.changeability xmi.value="changeable"/>

<Foundation.Core.StructuralFeature.targetScope xmi.value="instance"/>

<Foundation.Core.Feature.owner>

<Foundation.Core.Classifier xmi.idref="xmi.2"/>

</Foundation.Core.Feature.owner>

<Foundation.Core.StructuralFeature.type>

<Foundation.Core.Classifier xmi.idref="xmi.10"/>

</Foundation.Core.StructuralFeature.type>

<Foundation.Core.ModelElement.taggedValue>

<Foundation.Extension_Mechanisms.TaggedValue xmi.id="xmi.11">

<Foundation.Extension_Mechanisms.TaggedValue.tag>transient</Foundation.Exten
sion_Mechanisms.TaggedValue.tag>

<Foundation.Extension_Mechanisms.TaggedValue.value>false</Foundation.Extensi
on_Mechanisms.TaggedValue.value>

<Foundation.Extension_Mechanisms.TaggedValue.modelElement>

<Foundation.Core.ModelElement xmi.idref="xmi.9"/>

</Foundation.Extension_Mechanisms.TaggedValue.modelElement>

</Foundation.Extension_Mechanisms.TaggedValue>

<Foundation.Extension_Mechanisms.TaggedValue xmi.id="xmi.12">

<Foundation.Extension_Mechanisms.TaggedValue.tag>volatile</Foundation.Extens
ion_Mechanisms.TaggedValue.tag>

<Foundation.Extension_Mechanisms.TaggedValue.value>false</Foundation.Extensi
on_Mechanisms.TaggedValue.value>

<Foundation.Extension_Mechanisms.TaggedValue.modelElement>

<Foundation.Core.ModelElement xmi.idref="xmi.9"/>

</Foundation.Extension_Mechanisms.TaggedValue.modelElement>

</Foundation.Extension_Mechanisms.TaggedValue>

</Foundation.Core.ModelElement.taggedValue>

</Foundation.Core.Attribute>

</Foundation.Core.Classifier.feature>

</Foundation.Core.Class>

<Foundation.Core.DataType xmi.id="xmi.13"
xmi.uuid="-61--36-60-11-269997:faf5d4bc71:-7ffc">

<Foundation.Core.ModelElement.name>int</Foundation.Core.ModelElement.name>

<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>

<Foundation.Core.ModelElement.namespace>

<Foundation.Core.Namespace xmi.idref="xmi.1"/>

</Foundation.Core.ModelElement.namespace>

</Foundation.Core.DataType>

<Model_Management.Package xmi.id="xmi.14"
xmi.uuid="-61--36-60-11-269997:faf5d4bc71:-7ffa">

<Foundation.Core.ModelElement.name>java</Foundation.Core.ModelElement.name>

<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>

<Foundation.Core.ModelElement.namespace>

<Foundation.Core.Namespace xmi.idref="xmi.1"/>

</Foundation.Core.ModelElement.namespace>

<Foundation.Core.Namespace.ownedElement>

<Model_Management.Package xmi.id="xmi.15"
xmi.uuid="-61--36-60-11-269997:faf5d4bc71:-7ff9">

<Foundation.Core.ModelElement.name>math</Foundation.Core.ModelElement.name>

<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>

<Foundation.Core.ModelElement.namespace>

<Foundation.Core.Namespace xmi.idref="xmi.14"/>

</Foundation.Core.ModelElement.namespace>

<Foundation.Core.Namespace.ownedElement>

<Foundation.Core.Class xmi.id="xmi.16"
xmi.uuid="-61--36-60-11-269997:faf5d4bc71:-7ff8">

<Foundation.Core.ModelElement.name>BigDecimal</Foundation.Core.ModelElement.
name>

<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>

<Foundation.Core.Class.isActive xmi.value="false"/>

<Foundation.Core.ModelElement.namespace>

<Foundation.Core.Namespace xmi.idref="xmi.15"/>

</Foundation.Core.ModelElement.namespace>

</Foundation.Core.Class>

</Foundation.Core.Namespace.ownedElement>

</Model_Management.Package>

<Model_Management.Package xmi.id="xmi.17"
xmi.uuid="-61--36-60-11-269997:faf5d4bc71:-7ff7">

<Foundation.Core.ModelElement.name>lang</Foundation.Core.ModelElement.name>

<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>

<Foundation.Core.ModelElement.namespace>

<Foundation.Core.Namespace xmi.idref="xmi.14"/>

</Foundation.Core.ModelElement.namespace>

<Foundation.Core.Namespace.ownedElement>

<Foundation.Core.Class xmi.id="xmi.10"
xmi.uuid="-61--36-60-11-269997:faf5d4bc71:-7ff6">

<Foundation.Core.ModelElement.name>String</Foundation.Core.ModelElement.name
>

<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>

<Foundation.Core.Class.isActive xmi.value="false"/>

<Foundation.Core.ModelElement.namespace>

<Foundation.Core.Namespace xmi.idref="xmi.17"/>

</Foundation.Core.ModelElement.namespace>

</Foundation.Core.Class>

</Foundation.Core.Namespace.ownedElement>

</Model_Management.Package>

</Foundation.Core.Namespace.ownedElement>

</Model_Management.Package>

<Foundation.Core.Class xmi.id="xmi.18"
xmi.uuid="-61--36-60-11-269997:faf5d4bc71:-7ff4">

<Foundation.Core.ModelElement.name>Voiture</Foundation.Core.ModelElement.nam
e>

<Foundation.Core.ModelElement.visibility xmi.value="public"/>

<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>

<Foundation.Core.Class.isActive xmi.value="false"/>

<Foundation.Core.ModelElement.namespace>

<Foundation.Core.Namespace xmi.idref="xmi.1"/>

</Foundation.Core.ModelElement.namespace>

<Foundation.Core.Classifier.feature>

<Foundation.Core.Attribute xmi.id="xmi.19"
xmi.uuid="-61--36-60-11-269997:faf5d4bc71:-7fef">

<Foundation.Core.ModelElement.name>anneeModele</Foundation.Core.ModelElement
.name>

<Foundation.Core.ModelElement.visibility xmi.value="public"/>

<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>

<Foundation.Core.Feature.ownerScope xmi.value="instance"/>

<Foundation.Core.StructuralFeature.multiplicity>

<Foundation.Data_Types.Multiplicity xmi.idref="xmi.4"/>

</Foundation.Core.StructuralFeature.multiplicity>

<Foundation.Core.StructuralFeature.changeability xmi.value="changeable"/>

<Foundation.Core.StructuralFeature.targetScope xmi.value="instance"/>

<Foundation.Core.Feature.owner>

<Foundation.Core.Classifier xmi.idref="xmi.18"/>

</Foundation.Core.Feature.owner>

<Foundation.Core.StructuralFeature.type>

<Foundation.Core.Classifier xmi.idref="xmi.13"/>

</Foundation.Core.StructuralFeature.type>

<Foundation.Core.ModelElement.taggedValue>

<Foundation.Extension_Mechanisms.TaggedValue xmi.id="xmi.20">

<Foundation.Extension_Mechanisms.TaggedValue.tag>transient</Foundation.Exten
sion_Mechanisms.TaggedValue.tag>

<Foundation.Extension_Mechanisms.TaggedValue.value>false</Foundation.Extensi
on_Mechanisms.TaggedValue.value>

<Foundation.Extension_Mechanisms.TaggedValue.modelElement>

<Foundation.Core.ModelElement xmi.idref="xmi.19"/>

</Foundation.Extension_Mechanisms.TaggedValue.modelElement>

</Foundation.Extension_Mechanisms.TaggedValue>

<Foundation.Extension_Mechanisms.TaggedValue xmi.id="xmi.21">

<Foundation.Extension_Mechanisms.TaggedValue.tag>volatile</Foundation.Extens
ion_Mechanisms.TaggedValue.tag>

<Foundation.Extension_Mechanisms.TaggedValue.value>false</Foundation.Extensi
on_Mechanisms.TaggedValue.value>

<Foundation.Extension_Mechanisms.TaggedValue.modelElement>

<Foundation.Core.ModelElement xmi.idref="xmi.19"/>

</Foundation.Extension_Mechanisms.TaggedValue.modelElement>

</Foundation.Extension_Mechanisms.TaggedValue>

</Foundation.Core.ModelElement.taggedValue>

</Foundation.Core.Attribute>

</Foundation.Core.Classifier.feature>

</Foundation.Core.Class>

<Foundation.Core.DataType xmi.id="xmi.22"
xmi.uuid="-61--36-60-11-269997:faf5d4bc71:-7ff1">

<Foundation.Core.ModelElement.name>void</Foundation.Core.ModelElement.name>

<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>

<Foundation.Core.ModelElement.namespace>

<Foundation.Core.Namespace xmi.idref="xmi.1"/>

</Foundation.Core.ModelElement.namespace>

</Foundation.Core.DataType>

<Foundation.Core.Association xmi.id="xmi.23"
xmi.uuid="-61--36-60-11-269997:faf5d4bc71:-7fee">

<Foundation.Core.ModelElement.name>possede</Foundation.Core.ModelElement.nam
e>

<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>

<Foundation.Core.ModelElement.namespace>

<Foundation.Core.Namespace xmi.idref="xmi.1"/>

</Foundation.Core.ModelElement.namespace>

<Foundation.Core.Association.connection>

<Foundation.Core.AssociationEnd xmi.id="xmi.24"
xmi.uuid="-61--36-60-11-269997:faf5d4bc71:-7fed">

<Foundation.Core.ModelElement.name>proprietaire</Foundation.Core.ModelElemen
t.name>

<Foundation.Core.ModelElement.visibility xmi.value="public"/>

<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>

<Foundation.Core.AssociationEnd.isNavigable xmi.value="true"/>

<Foundation.Core.AssociationEnd.ordering xmi.value="unordered"/>

<Foundation.Core.AssociationEnd.aggregation xmi.value="none"/>

<Foundation.Core.AssociationEnd.targetScope xmi.value="instance"/>

<Foundation.Core.AssociationEnd.multiplicity>

<Foundation.Data_Types.Multiplicity xmi.idref="xmi.4"/>

</Foundation.Core.AssociationEnd.multiplicity>

<Foundation.Core.AssociationEnd.changeability xmi.value="changeable"/>

<Foundation.Core.AssociationEnd.association>

<Foundation.Core.Association xmi.idref="xmi.23"/>

</Foundation.Core.AssociationEnd.association>

<Foundation.Core.AssociationEnd.type>

<Foundation.Core.Classifier xmi.idref="xmi.2"/>

</Foundation.Core.AssociationEnd.type>

</Foundation.Core.AssociationEnd>

<Foundation.Core.AssociationEnd xmi.id="xmi.25"
xmi.uuid="-61--36-60-11-269997:faf5d4bc71:-7fec">

<Foundation.Core.ModelElement.name>sa_voiture</Foundation.Core.ModelElement.
name>

<Foundation.Core.ModelElement.visibility xmi.value="public"/>

<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>

<Foundation.Core.AssociationEnd.isNavigable xmi.value="true"/>

<Foundation.Core.AssociationEnd.ordering xmi.value="unordered"/>

<Foundation.Core.AssociationEnd.aggregation xmi.value="none"/>

<Foundation.Core.AssociationEnd.targetScope xmi.value="instance"/>

<Foundation.Core.AssociationEnd.multiplicity>

<Foundation.Data_Types.Multiplicity xmi.id="xmi.26">

<Foundation.Data_Types.Multiplicity.range>

<Foundation.Data_Types.MultiplicityRange xmi.id="xmi.27">

<Foundation.Data_Types.MultiplicityRange.lower>-1</Foundation.Data_Types.Mul
tiplicityRange.lower>

<Foundation.Data_Types.MultiplicityRange.upper>-1</Foundation.Data_Types.Mul
tiplicityRange.upper>

</Foundation.Data_Types.MultiplicityRange>

</Foundation.Data_Types.Multiplicity.range>

</Foundation.Data_Types.Multiplicity>

</Foundation.Core.AssociationEnd.multiplicity>

<Foundation.Core.AssociationEnd.changeability xmi.value="changeable"/>

<Foundation.Core.AssociationEnd.association>

<Foundation.Core.Association xmi.idref="xmi.23"/>

</Foundation.Core.AssociationEnd.association>

<Foundation.Core.AssociationEnd.type>

<Foundation.Core.Classifier xmi.idref="xmi.18"/>

</Foundation.Core.AssociationEnd.type>

</Foundation.Core.AssociationEnd>

</Foundation.Core.Association.connection>

</Foundation.Core.Association>

<Foundation.Core.Class xmi.id="xmi.28"
xmi.uuid="-61--36-60-11-269997:faf5d4bc71:-7feb">

<Foundation.Core.ModelElement.name>string</Foundation.Core.ModelElement.name
>

<Foundation.Core.ModelElement.visibility xmi.value="public"/>

<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>

<Foundation.Core.Class.isActive xmi.value="false"/>

<Foundation.Core.ModelElement.namespace>

<Foundation.Core.Namespace xmi.idref="xmi.1"/>

</Foundation.Core.ModelElement.namespace>

</Foundation.Core.Class>

<Foundation.Core.Class xmi.id="xmi.6"
xmi.uuid="-61--36-60-11-269997:faf5d4bc71:-7fea">

<Foundation.Core.ModelElement.name>Stringl</Foundation.Core.ModelElement.nam
e>

<Foundation.Core.ModelElement.visibility xmi.value="public"/>

<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>

<Foundation.Core.Class.isActive xmi.value="false"/>

<Foundation.Core.ModelElement.namespace>

<Foundation.Core.Namespace xmi.idref="xmi.1"/>

</Foundation.Core.ModelElement.namespace>

</Foundation.Core.Class>

<Foundation.Core.Class xmi.id="xmi.29"
xmi.uuid="-61--36-60-11-269997:faf5d4bc71:-7fe9">

<Foundation.Core.ModelElement.name>Garage</Foundation.Core.ModelElement.name
>

<Foundation.Core.ModelElement.visibility xmi.value="public"/>

<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>

<Foundation.Core.Class.isActive xmi.value="false"/>

<Foundation.Core.ModelElement.namespace>

<Foundation.Core.Namespace xmi.idref="xmi.1"/>

</Foundation.Core.ModelElement.namespace>

<Foundation.Core.Classifier.feature>

<Foundation.Core.Attribute xmi.id="xmi.30"
xmi.uuid="-61--36-60-11-269997:faf5d4bc71:-7fe4">

<Foundation.Core.ModelElement.name>adresse</Foundation.Core.ModelElement.nam
e>

<Foundation.Core.ModelElement.visibility xmi.value="public"/>

<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>

<Foundation.Core.Feature.ownerScope xmi.value="instance"/>

<Foundation.Core.StructuralFeature.multiplicity>

<Foundation.Data_Types.Multiplicity xmi.idref="xmi.4"/>

</Foundation.Core.StructuralFeature.multiplicity>

<Foundation.Core.StructuralFeature.changeability xmi.value="changeable"/>

<Foundation.Core.StructuralFeature.targetScope xmi.value="instance"/>

<Foundation.Core.Feature.owner>

<Foundation.Core.Classifier xmi.idref="xmi.29"/>

</Foundation.Core.Feature.owner>

<Foundation.Core.StructuralFeature.type>

<Foundation.Core.Classifier xmi.idref="xmi.10"/>

</Foundation.Core.StructuralFeature.type>

<Foundation.Core.ModelElement.taggedValue>

<Foundation.Extension_Mechanisms.TaggedValue xmi.id="xmi.31">

<Foundation.Extension_Mechanisms.TaggedValue.tag>transient</Foundation.Exten
sion_Mechanisms.TaggedValue.tag>

<Foundation.Extension_Mechanisms.TaggedValue.value>false</Foundation.Extensi
on_Mechanisms.TaggedValue.value>

<Foundation.Extension_Mechanisms.TaggedValue.modelElement>

<Foundation.Core.ModelElement xmi.idref="xmi.30"/>

</Foundation.Extension_Mechanisms.TaggedValue.modelElement>

</Foundation.Extension_Mechanisms.TaggedValue>

<Foundation.Extension_Mechanisms.TaggedValue xmi.id="xmi.32">

<Foundation.Extension_Mechanisms.TaggedValue.tag>volatile</Foundation.Extens
ion_Mechanisms.TaggedValue.tag>

<Foundation.Extension_Mechanisms.TaggedValue.value>false</Foundation.Extensi
on_Mechanisms.TaggedValue.value>

<Foundation.Extension_Mechanisms.TaggedValue.modelElement>

<Foundation.Core.ModelElement xmi.idref="xmi.30"/>

</Foundation.Extension_Mechanisms.TaggedValue.modelElement>

</Foundation.Extension_Mechanisms.TaggedValue>

</Foundation.Core.ModelElement.taggedValue>

</Foundation.Core.Attribute>

<Foundation.Core.Attribute xmi.id="xmi.33"
xmi.uuid="-61--36-60-11-269997:faf5d4bc71:-7fe3">

<Foundation.Core.ModelElement.name>ville</Foundation.Core.ModelElement.name>

<Foundation.Core.ModelElement.visibility xmi.value="public"/>

<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>

<Foundation.Core.Feature.ownerScope xmi.value="instance"/>

<Foundation.Core.StructuralFeature.multiplicity>

<Foundation.Data_Types.Multiplicity xmi.idref="xmi.4"/>

</Foundation.Core.StructuralFeature.multiplicity>

<Foundation.Core.StructuralFeature.changeability xmi.value="changeable"/>

<Foundation.Core.StructuralFeature.targetScope xmi.value="instance"/>

<Foundation.Core.Feature.owner>

<Foundation.Core.Classifier xmi.idref="xmi.29"/>

</Foundation.Core.Feature.owner>

<Foundation.Core.StructuralFeature.type>

<Foundation.Core.Classifier xmi.idref="xmi.10"/>

</Foundation.Core.StructuralFeature.type>

<Foundation.Core.ModelElement.taggedValue>

<Foundation.Extension_Mechanisms.TaggedValue xmi.id="xmi.34">

<Foundation.Extension_Mechanisms.TaggedValue.tag>transient</Foundation.Exten
sion_Mechanisms.TaggedValue.tag>

<Foundation.Extension_Mechanisms.TaggedValue.value>false</Foundation.Extensi
on_Mechanisms.TaggedValue.value>

<Foundation.Extension_Mechanisms.TaggedValue.modelElement>

<Foundation.Core.ModelElement xmi.idref="xmi.33"/>

</Foundation.Extension_Mechanisms.TaggedValue.modelElement>

</Foundation.Extension_Mechanisms.TaggedValue>

<Foundation.Extension_Mechanisms.TaggedValue xmi.id="xmi.35">

<Foundation.Extension_Mechanisms.TaggedValue.tag>volatile</Foundation.Extens
ion_Mechanisms.TaggedValue.tag>

<Foundation.Extension_Mechanisms.TaggedValue.value>false</Foundation.Extensi
on_Mechanisms.TaggedValue.value>

<Foundation.Extension_Mechanisms.TaggedValue.modelElement>

<Foundation.Core.ModelElement xmi.idref="xmi.33"/>

</Foundation.Extension_Mechanisms.TaggedValue.modelElement>

</Foundation.Extension_Mechanisms.TaggedValue>

</Foundation.Core.ModelElement.taggedValue>

</Foundation.Core.Attribute>

</Foundation.Core.Classifier.feature>

</Foundation.Core.Class>

<Foundation.Core.Association xmi.id="xmi.36"
xmi.uuid="-61--36-60-11-269997:faf5d4bc71:-7fe7">

<Foundation.Core.ModelElement.name>est_garee</Foundation.Core.ModelElement.n
ame>

<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>

<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>

<Foundation.Core.ModelElement.namespace>

<Foundation.Core.Namespace xmi.idref="xmi.1"/>

</Foundation.Core.ModelElement.namespace>

<Foundation.Core.Association.connection>

<Foundation.Core.AssociationEnd xmi.id="xmi.37"
xmi.uuid="-61--36-60-11-269997:faf5d4bc71:-7fe6">

<Foundation.Core.ModelElement.name>voitures</Foundation.Core.ModelElement.na
me>

<Foundation.Core.ModelElement.visibility xmi.value="public"/>

<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>

<Foundation.Core.AssociationEnd.isNavigable xmi.value="true"/>

<Foundation.Core.AssociationEnd.ordering xmi.value="unordered"/>

<Foundation.Core.AssociationEnd.aggregation xmi.value="none"/>

<Foundation.Core.AssociationEnd.targetScope xmi.value="instance"/>

<Foundation.Core.AssociationEnd.multiplicity>

<Foundation.Data_Types.Multiplicity xmi.idref="xmi.26"/>

</Foundation.Core.AssociationEnd.multiplicity>

<Foundation.Core.AssociationEnd.changeability xmi.value="changeable"/>

<Foundation.Core.AssociationEnd.association>

<Foundation.Core.Association xmi.idref="xmi.36"/>

</Foundation.Core.AssociationEnd.association>

<Foundation.Core.AssociationEnd.type>

<Foundation.Core.Classifier xmi.idref="xmi.18"/>

</Foundation.Core.AssociationEnd.type>

</Foundation.Core.AssociationEnd>

<Foundation.Core.AssociationEnd xmi.id="xmi.38"
xmi.uuid="-61--36-60-11-269997:faf5d4bc71:-7fe5">

<Foundation.Core.ModelElement.name>garage</Foundation.Core.ModelElement.name
>

<Foundation.Core.ModelElement.visibility xmi.value="public"/>

<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>

<Foundation.Core.AssociationEnd.isNavigable xmi.value="true"/>

<Foundation.Core.AssociationEnd.ordering xmi.value="unordered"/>

<Foundation.Core.AssociationEnd.aggregation xmi.value="none"/>

<Foundation.Core.AssociationEnd.targetScope xmi.value="instance"/>

<Foundation.Core.AssociationEnd.multiplicity>

<Foundation.Data_Types.Multiplicity xmi.idref="xmi.4"/>

</Foundation.Core.AssociationEnd.multiplicity>

<Foundation.Core.AssociationEnd.changeability xmi.value="changeable"/>

<Foundation.Core.AssociationEnd.association>

<Foundation.Core.Association xmi.idref="xmi.36"/>

</Foundation.Core.AssociationEnd.association>

<Foundation.Core.AssociationEnd.type>

<Foundation.Core.Classifier xmi.idref="xmi.29"/>

</Foundation.Core.AssociationEnd.type>

</Foundation.Core.AssociationEnd>

</Foundation.Core.Association.connection>

</Foundation.Core.Association>

</Foundation.Core.Namespace.ownedElement>

</Model_Management.Model>

</XMI.content>

</XMI>

2 réponses

Avatar
Eric
"Guillaume CABANAC" a écrit dans le message de
news:40c0b010$0$24151$
Bonjour,

J'utilise DOM pour parser un fichier XMI et je souhaiterais "résoudre
les références". J'ai trouvé dans la Javadoc qu'on peut le faire grâce à
la

méthode getElementById(String elementId) de la classe Document.
J'ai passé à la méthode parse le nom de l'attribut "xmi.id"... Malgré
tout cela, je n'arrive pas à obtenir l'element d'identifiant donné... Si
vous pouviez me dire à quel moment je pars dans le mur...
Mieux vaut du code que des explications hasardeuses...

Merci d'avance.
Guilaume Cabanac
[...]


Bonjour,

pour que getElementById fonctionne, il faut que l'attribut sur lequel tu
fais la recherche soit déclaré de type ID dans la DTD du fichier XML. Or, tu
n'as pas de DTD attachée à ton fichier XMI. Ca ne risque donc pas de
marcher...

Avatar
Guillaume CABANAC
pour que getElementById fonctionne, il faut que l'attribut sur lequel tu
fais la recherche soit déclaré de type ID dans la DTD du fichier XML. Or,
tu

n'as pas de DTD attachée à ton fichier XMI. Ca ne risque donc pas de
marcher...




Bonjour,

Merci pour ta réponse. J'ai donc récupéré la DTD
(http://www.gentleware.com/support/dev/uml14di_dtd.zip) du XMI généré par
l'outil que j'utilise Poseidon. J'ai trouvé dedans :

<!ENTITY % XMI.element.att
'xmi.id ID #IMPLIED
xmi.label CDATA #IMPLIED
xmi.uuid
CDATA #IMPLIED ' >

Je peux donc en conclure que, comme prévisible, c'est xmi.id qui est de
type ID.

J'ai ensuite associé le fichier DTD (stocké localement) à mon fichier
XML, grace à l'ajout de la ligne (dans mon fichier .xmi, juste après le tag
<?xml et avant les données) : <!DOCTYPE uml14di SYSTEM
"file:C:/uml14di.dtd">

Résultat : j'arrive à résoudre les références ! J'ai entendu parler de
XPointer... Pourriez-vous m'en dire un peu plus ?

Merci encore ;)