Bonjour,

Voila, je travaille sur un fichier xml

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 
<?xml version="1.0" encoding="utf-8"?>
	<DataSet>
		<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
			<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
				<xs:complexType>
					<xs:choice minOccurs="0" maxOccurs="unbounded">
						<xs:element name="xml">
							<xs:complexType>
								<xs:sequence>
									<xs:element name="Id" msdata:AutoIncrement="true" type="xs:int" />
									<xs:element name="Nom" minOccurs="0">
										<xs:simpleType>
											<xs:restriction base="xs:string">
												<xs:maxLength value="7" />
											</xs:restriction>
										</xs:simpleType>
									</xs:element>
									<xs:element name="Prenom" minOccurs="0">
										<xs:simpleType>
											<xs:restriction base="xs:string">
												<xs:maxLength value="8" />
											</xs:restriction>
										</xs:simpleType>
									</xs:element>
									<xs:element name="Rue" minOccurs="0">
										<xs:simpleType>
											<xs:restriction base="xs:string">
												<xs:maxLength value="10" />
											</xs:restriction>
										</xs:simpleType>
									</xs:element>
									<xs:element name="Nbr" type="xs:int" minOccurs="0"/>
								</xs:sequence>
							</xs:complexType>
						</xs:element>
					</xs:choice>
				</xs:complexType>
				<xs:unique name="Constraint1" msdata:PrimaryKey="true">
					<xs:selector xpath=".//xml" />
					<xs:field xpath="Id" />
				</xs:unique>
			</xs:element>
		</xs:schema>
		<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1" />
	</DataSet>
J'utilise pour ce faire SipleXml, et je voudrais ajouter un(des) noeuds.
Pour l'instant j'ai ceci comme code php :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
$xmlDataSet = simplexml_load_string($string);
$NewDataSet = $xmlDataSet->addChild('NewDataSet');
openDb();
$result = mysql_query("select * from xml") or die;
while ($row = mysql_fetch_assoc($result)) {
	$tableRow = $NewDataSet->addChild(xml);
	$i=0;
	while ($i < mysql_num_fields($result)) {
		$meta = mysql_fetch_field($result, $i);
		$tableRow->addChild($meta->name,$row[$meta->name]);
		$i++;
	}
}
Bien entendu, si je pose la question c'est que le resultat ne me satisfait pas
Mon fichier Xml devient ceci,
je passe tout le debut du code Xml pour faire court

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
<?xml version="1.0" encoding="utf-8"?>
<DataSet>
/*............*/
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"/>
	<NewDataSet>
		<xml>
			<Id>1</Id>
			<Nom>Mon Nom</Nom>
			<Prenom>Mon Prenom</Prenom>
			<Rue>Ma Rue</Rue>
			<Nbr>Mon Num</Nbr>
		</xml>
		<xml>
			<Id>2</Id>
			<Nom>Son Mon</Nom>
			<Prenom>Son Prenom</Prenom>
			<Rue>Sa Rue</Rue>
			<Nbr>Son Num</Nbr>
		</xml>
	</NewDataSet>
</DataSet>
Et en fait mon fichier devrais ressembler a ceci

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
<?xml version="1.0" encoding="utf-8"?>
<DataSet>
/*............*/
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
	<NewDataSet>
		<xml diffgr:id="xml1" msdata:rowOrder="0">
			<Id>1</Id>
			<Nom>Mon Nom</Nom>
			<Prenom>Mon Prenom</Prenom>
			<Rue>Ma Rue</Rue>
			<Nbr>Mon Num</Nbr>
		</xml>
		<xml diffgr:id="xml2" msdata:rowOrder="1">
			<Id>2</Id>
			<Nom>Son Mon</Nom>
			<Prenom>Son Prenom</Prenom>
			<Rue>Sa Rue</Rue>
			<Nbr>Son Num</Nbr>
		</xml>
	</NewDataSet>
</diffgr:diffgram>
</DataSet>
On peut donc observer qu'il manque,dans chaque noeud "<xml>", la reference au NameSpace, de meme que la balise fermante de la declaration du NameSpace.
je me doute bien que c'est dans
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$tableRow->addChild($meta->name,$row[$meta->name]);
qu'il faut y faire reference mais, voila ma question ,comment faire ?

PS : certains auront remarques qu'il s'agit d'un DataSet VisualC# serialisé