downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

XMLReader::lookupNamespace> <XMLReader::getParserProperty
[edit] Last updated: Fri, 25 May 2012

view this page in

XMLReader::isValid

(PHP 5 >= 5.1.2)

XMLReader::isValidZeigt an, ob das geparste Dokument valide ist

Beschreibung

bool XMLReader::isValid ( void )

Gibt einen boolschen Wert zurück, der anzeigt, ob das geparste Dokument sich aktuell in einem validen Zustand befindet.

Rückgabewerte

Gibt bei Erfolg TRUE zurück. Im Fehlerfall wird FALSE zurückgegeben.

Beispiele

Beispiel #1 Validierung von XML

<?php
$xml 
XMLReader::open('test.xml');

// VALIDATE Option muss gesetzt werden
$xml->setParserProperty(XMLReader::VALIDATEtrue);

var_dump($xml->isValid());
?>

Siehe auch



XMLReader::lookupNamespace> <XMLReader::getParserProperty
[edit] Last updated: Fri, 25 May 2012
 
add a note add a note User Contributed Notes XMLReader::isValid
zubin at trattonuovo dot com 20-Jan-2010 03:00
I encountered some problems to use isValid method with xml2assoc function.
I use this way to validate the entire xml file and put it into an associative array.

$xml = new XMLReader();
if (!$xml->xml($xml_string, NULL, LIBXML_DTDVALID)) {
  echo "XML not valid: load error";
  exit();
}

libxml_use_internal_errors(TRUE);

$xml_array = xml2assoc($xml);

$arErrors = libxml_get_errors();
$xml_errors = "";
foreach ($arErrors AS $xmlError) $xml_errors .= $xmlError->message;
if ($xml_errors != "") {
  echo "XML not valid: ".$xml_errors;
  exit();
}

//all ok
remy dot damour at laposte dot net 31-Dec-2008 03:27
1. If you validate against relax-ng, no need to call $xml->setParserProperty(XMLReader::VALIDATE, true);

2. Be aware that $xml->isValid() will return validity for currently active node (ie. node currently positioned using $xml->read()). It won't check validity of your entire tree at once, but rather on a step by step basis
anzenews at volja dot net 22-Jan-2008 10:50
This comment is only partially correct:
"isValid() always returns false unless you enable checking for validity by $reader->setParserProperty(XMLReader::VALIDATE, true);"
This enables DTD checking, but you can also check by using RelaxNG (see setRelaxNGSchema() and setRelaxNGSchemaSource()).

And also, this is NOT correct:
"If you just need to check if XML file is well formed, successful loading into XMLReader object is usually enough."
It is not enough. Pull parsers operate on stream and if you have a large enough file they will not know it is well formed until it is read to the end. If you need to know if it is well formed or/and valid, read it till the end or validation error (you can use next() for fast reading if you don't care about contents).
patryk dot szczyglowski at gmail dot com 21-Dec-2007 06:10
isValid() always returns false unless you enable checking for validity by:

$reader->setParserProperty(XMLReader::VALIDATE, true);
where $reader is XMLReader object.

Beware, once you enable this check, PHP will search for DTD file and possibly produce warnings.

If you just need to check if XML file is well formed, successful loading into XMLReader object is usually enough.

 
show source | credits | sitemap | contact | advertising | mirror sites