By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
459,725 Members | 1,269 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 459,725 IT Pros & Developers. It's quick & easy.

Valid XML for SimpleXML

P: n/a
I'm trying to use SimpleXML but I've run into a conundrum. Every day
an XML file is generated that this script grabs and manipulates. How
can I check that the XML has no problems before creating my
SimpleXMLelement object. Here's what I mean:

// this is the code in question:
$file_topstory = /some/xml/file.xml
$top_story_xml = new SimpleXMLElement($file_topstory, NULL, TRUE);

If the XML doc contains (for example) a URL with an '&' in it then the
script fails. I'd like to do something like this:

if(is_valid_xml($file_topstory)){
$top_story_xml = new SimpleXMLElement($file_topstory, NULL, TRUE);
}else{
// ERROR
}

How can i accomplish this?

Jul 18 '07 #1
Share this Question
Share on Google+
3 Replies


P: n/a
bleen wrote:
I'm trying to use SimpleXML but I've run into a conundrum. Every day
an XML file is generated that this script grabs and manipulates. How
can I check that the XML has no problems before creating my
SimpleXMLelement object.
SimpleXMLElement throws an exception when the XML is invalid:

try {
$xml = new SimpleXMLElement(.....);
} catch (Exception $e) {
// Unparseable XML
}
JW
Jul 18 '07 #2

P: n/a
bleen wrote:
How can I check that the XML has no problems before creating my
SimpleXMLelement object.
Try tidy. Either as a standalone program, or as a PHP module.

--
----------------------------------
Iván Sánchez Ortega -ivansanchez-algarroba-escomposlinux-punto-org-

"You know "that look" women get when they want sex? Me neither."
--Steve Martin
Jul 18 '07 #3

P: n/a
On Jul 18, 3:53 pm, bleen <blee...@gmail.comwrote:
I'm trying to use SimpleXML but I've run into a conundrum. Every day
an XML file is generated that this script grabs and manipulates. How
can I check that the XML has no problems before creating my
SimpleXMLelement object. Here's what I mean:

// this is the code in question:
$file_topstory = /some/xml/file.xml
$top_story_xml = new SimpleXMLElement($file_topstory, NULL, TRUE);

If the XML doc contains (for example) a URL with an '&' in it then the
script fails. I'd like to do something like this:

if(is_valid_xml($file_topstory)){
$top_story_xml = new SimpleXMLElement($file_topstory, NULL, TRUE);

}else{
// ERROR
}

How can i accomplish this?
According to the manual at <http://www.php.net/manual/en/
function.simplexml-element-construct.php>

"Produces an E_WARNING error message for each error found in the XML
data and throws an exception if errors were detected."

So, suppress the error and catch the exception:

try {
$top_story_xml = @new SimpleXMLElement($file_topstory, NULL,
TRUE);
} catch (Exception $e) {
//some error occured
}

Jul 19 '07 #4

This discussion thread is closed

Replies have been disabled for this discussion.