XML in PHP

XChris

Erfahrenes Mitglied
Hallo,

ich möchte ein XMl File an einen Webserver senden und den Inhalt darin weiterverarbeiten. Ich benutze PHP 5 und einen Apache 1.3.

Zum Testen habe ich mir ein HTML mit einer FORM gebastelt:

HTML:
<html>
	<head>
		<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
			<title>Test um XML zu versenden</title>
	</head>
	<body>
		<h1>Test um XML zu versenden</h1>
		<p>
			<form enctype="multipart/form-data" action="http://localhost/WebService/Server/server.php" method="post" accept-charset="ISO-8859-1 ISO-8859-2">
				<textarea name="user_eingabe" cols="100" rows="40">
<?xml version="1.0" encoding="utf-8"?>						
<RegistrierungRequest xmlns="http://localhost/Server/einTest.xml">
	<FirmenName>TestFirma</FirmenName>
	<FirmenAdresse>
			<Strasse>TestStrasse</Strasse>
			<Ort>TestOrt</Ort>
			<PLZ>99999</PLZ>
	</FirmenAdresse>
	<MACAddress1>MACID_TEST1</MACAddress1>
	<HDDID>HDDID_TEST1</HDDID>
</RegistrierungRequest>
				</textarea>
				<p>
					<input type="submit" value=" Absenden ">
					<input type="reset" value=" Abbrechen">
				</p>	
			</form>				
		</p>
	</body>
</html>


Nun Schaue ich mir das ganze via PHH auf dem Server an und möchte es als XMlDokument nutzen:

PHP:
<?php

class RegisterXmlParser
{
	var $xml = SimpleXMLElement;
	
	
	// Konstruktor - übergeben des Postinhaltes
	public function RegisterXmlParser($temp)	
	{
		$xml = new SimpleXMLElement($temp);		
	}
	
	// Zeigt den Inhalt
	public function Show()
	{
	 	echo $xml; 
	} 	
}

$Inhalt = $_POST["user_eingabe"];

$XMLPars = new RegisterXmlParser($Inhalt);
$XMLPars->Show();

?>

Jedoch bekomme ich dann Fehlermeldungen, dass der String nicht mit ' oder " beginnen würde oder nicht mit < etc. Eine Auswahl:

Warning: SimpleXMLElement::__construct() [function.SimpleXMLElement---construct]: Entity: line 1: parser error : String not started expecting ' or " in C:\wamp\www\Server\lib\serverlib_xml.php on line 10

Was muss ich mit dem POST anfagen, dass ich es endlich in ein XMLElement stopfen darf? Muss ich bei POST generell eine Größeneinschränkung beachten? Vielen Danke für Beiträge die mir helfen.


Chris
 
Das alleine ist es nicht. Die Meldungen sind jetzt weniger ... auch mit addslashs hab ich schon experimentiert:

TestFirma TestStrasse TestOrt 99999 MACID_TEST1 HDDID_TEST1
Warning: SimpleXMLElement::__construct() [function.SimpleXMLElement---construct]: Entity: line 1: parser error : Start tag expected, '<' not found in C:\wamp\www\WebService\Server\lib\serverlib_xml.php on line 10

Warning: SimpleXMLElement::__construct() [function.SimpleXMLElement---construct]: &lt;?xml version=\\\&quot;1.0\\\&quot; encoding=\\\&quot;utf-8\\\&quot;?&gt; in C:\wamp\www\WebService\Server\lib\serverlib_xml.php on line 10

Warning: SimpleXMLElement::__construct() [function.SimpleXMLElement---construct]: ^ in C:\wamp\www\WebService\Server\lib\serverlib_xml.php on line 10

Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in C:\wamp\www\WebService\Server\lib\serverlib_xml.php:10 Stack trace: #0 C:\wamp\www\WebService\Server\lib\serverlib_xml.php(10): SimpleXMLElement->__construct('&lt;?xml versio...') #1 C:\wamp\www\WebService\Server\server.php(10): RegisterXmlParser->RegisterXmlParser('<?xml version=\...') #2 {main} thrown in C:\wamp\www\WebService\Server\lib\serverlib_xml.php on line 10
 
Habs:
PHP:
$Inhalt = $_POST["user_eingabe"];
$Inhalt = htmlspecialchars($Inhalt, ENT_QUOTES);
$Inhalt = preg_replace('/&#0*39;/', '&apos;', $Inhalt);

Doch noch ne Frage. Der Parser schimpft nun:

Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in C:\wamp\www\WebService\Server\lib\serverlib_xml.php:12 Stack trace: #0 C:\wamp\www\ebService\Server\lib\serverlib_xml.php(12): SimpleXMLElement->__construct('') #1 C:\wamp\www\WebService\Server\server.php(14): RegisterXmlParser->RegisterXmlParser('&lt;?xml versio...') #2 {main} thrown in C:\wamp\www\WebService\Server\lib\serverlib_xml.php on line 12
 
Zuletzt bearbeitet:
Zurück