PHP & XML
Ik loop nu stage bij een stichting die AFAS PROFIT als ERP systeem gebruiken.
Uit dit systeem kun je gegevens halen d.m.v. de Getconnector van het programma. Deze Getconnector kun je aanroepen d.m.v. php (php.net/com).
De Getconnector spuigt dan XML. Ik heb in mijn script het zo gemaakt dat hij dit XML opslaat als een XML bestand. Alles werkt perfect, ik heb ook diverse XML bestanden uit het systeem Profit kunnen halen. Alleen nu heb ik 1 XML (Getconnector) die probleem geeft en deze foutmelding op het scherm post:
Warning: simplexml_load_file() [function.simplexml-load-file]: xml/OrgPersoon.xml:1: parser error : Input is not proper UTF-8, indicate encoding ! Bytes: 0xEB 0x6C 0x20 0x56 in C:\xampp\htdocs\test\test.php on line 130
Warning: simplexml_load_file() [function.simplexml-load-file]: ganisaties_Personen><Organisatie_Persoon>1000322</Organisatie_Persoon><Naam>Dani in C:\xampp\htdocs\test\test.php on line 130
Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in C:\xampp\htdocs\test\test.php on line 130
Mijn PHP code voor het inlezen van XML bestand is:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$s = simplexml_load_file("xml/" . $bestanden);
// We gooien de tabel in de database eerst leeg
$leeg_tabel = "TRUNCATE TABLE Org_Persoon";
$info = mysql_query($leeg_tabel);
foreach ($s->Organisaties_Personen as $value)
{
$insert_query = "INSERT INTO Org_Persoon (Organisatie_Persoon,Naam)
VALUES ('" . $value->Organisatie . "','" . addslashes($value->Naam) . "')";
$info_query = mysql_query($insert_query) or die(mysql_error());
}
?>
$s = simplexml_load_file("xml/" . $bestanden);
// We gooien de tabel in de database eerst leeg
$leeg_tabel = "TRUNCATE TABLE Org_Persoon";
$info = mysql_query($leeg_tabel);
foreach ($s->Organisaties_Personen as $value)
{
$insert_query = "INSERT INTO Org_Persoon (Organisatie_Persoon,Naam)
VALUES ('" . $value->Organisatie . "','" . addslashes($value->Naam) . "')";
$info_query = mysql_query($insert_query) or die(mysql_error());
}
?>
* dit is een onderdeel van het totale script.
Ik al op de foutcodens gegoogled alleen kom ik er gewoon simpel weg niet uit.
Enige idee? Het vreemde is dat de andere XML files wel gewoon goed worden uitgelezen met de zelfde code.
Thanks voor je hulp alvast :D
Ruliezz
Hoe ziet die xml eruit? Die error geeft aan dat de inhoud van die XML niet helemaal klopt.
Code (php)
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
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
<?php
<AfasGetConnector>
−
<xs:schema>
−
<xs:element name="AfasGetConnector">
−
<xs:complexType>
−
<xs:choice maxOccurs="unbounded">
−
<xs:element name="Organisaties_Personen">
−
<xs:complexType>
−
<xs:sequence>
<xs:element name="Organisatie_Persoon" type="xs:string" minOccurs="0"/>
<xs:element name="Naam" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<Organisaties_Personen>
<Organisatie_Persoon>1000002</Organisatie_Persoon>
<Naam>bedrijfsnaam</Naam>
</Organisaties_Personen>
</AfasGetConnector>
?>
<AfasGetConnector>
−
<xs:schema>
−
<xs:element name="AfasGetConnector">
−
<xs:complexType>
−
<xs:choice maxOccurs="unbounded">
−
<xs:element name="Organisaties_Personen">
−
<xs:complexType>
−
<xs:sequence>
<xs:element name="Organisatie_Persoon" type="xs:string" minOccurs="0"/>
<xs:element name="Naam" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<Organisaties_Personen>
<Organisatie_Persoon>1000002</Organisatie_Persoon>
<Naam>bedrijfsnaam</Naam>
</Organisaties_Personen>
</AfasGetConnector>
?>
Gewijzigd op 01/01/1970 01:00:00 door ruliezz
Je XML klopt dus niet, die − is volgens mij de HTML code voor een streepje ofzo. Zorg er eerst eens voor dat je XML klopt.
Dat is de code die hij niet wil weergeven. (maar dan aan elkaar)
Aan de XML code kan ik zelf niet zo veel veranderen. Dit doet het programma.
De style van het document is MS XML. Dit zou ik wel kunnen weergeven als gewoon XML maar er werd aangeraden om XML MS te gebruiken.
Je slaat de XML toch op? Dan kun je toch ook die − eruit halen en er vervolgens voor zorgen dat het correct XML word?
Vaag probleem....
http://www.w3.org/XML/Schema en het probleem is opgelost. Lag dus aan AFAS PROFIT :S
In iedergeval bedankt voor je hulp!
Probleem is opgelost! AFAS PROFIT geneeert een zeeeeer oud w3 XML Schema uit 2001. Dit heb ik veranderd naar In iedergeval bedankt voor je hulp!
Ik heb nog even verder gezocht op internet. Dreamweaver slaat het bestand speciaal op. Je kunt dit lezen op http://www.adobe.com/support/documentation/en/dreamweaver/mx2004/dwusing_errata/dwusing_errata2.html.
Maar hoe zorgen we er voor dat PHP dit doet met fopen?
Gewijzigd op 01/01/1970 01:00:00 door ruliezz
Probleem is opgelost, na wat door ploetteren en door zoeken kwam ik er achter dat er een function bestaat die het bestand goed opslaat namelijk: utf8_encode()