XML Closing Tags

perlwhite
perlwhite used Ask the Experts™
on
Hello,
I am constructing XML to make a web service call. I close one of the tags like this:
<tagname isNull="false" />
When I look at the Generated Source (Firefox), it has ignored the closing tag and has generated </tagName>.
For example,
<tag1>
    <tag2>Some Value</tag2>
    <tag3 isNull="false" />
   <tag4>Some other Value</tag4>
</tag1>
becomes
<tag1>
    <tag2>Some Value</tag2>
    <tag3 isNull="false">
   <tag4>Some other Value</tag4>
    </tag3>
    <tag3 isNull="false"></tag3>
</tag1>

Any help is appreciated!
Thanks
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
Firebugs adds missing tags on it's own. Make sure that you look at the HTML with the browser's "View Source" feature

refer - here is same answer
http://stackoverflow.com/questions/3355507/php-stop-closing-tag-being-automatically-added

Author

Commented:
My View Source is showing the current XML. However, I am still getting an error from the web service. Is there anything else that I am overlooking?

Commented:
Are you declaring your xml document as standards are requiring?

<?xml version="1.0"?>

Open in new window

Introduction to Web Design

Develop a strong foundation and understanding of web design by learning HTML, CSS, and additional tools to help you develop your own website.

Most Valuable Expert 2011
Top Expert 2016

Commented:
... it has ignored the closing tag ...
What is "it" in that statement?  How exactly are you constructing the XML document?

Author

Commented:
It is the generated source.

The web service does not require the <?xml ... tag.

I am constructing xml in a php variable which is then passed to the web method.

$param = '<tag1>';
$param .= .....

I am constructing xml in the same fashion for another web method from the same web service provider and it works flawlessly.

Commented:
Try to construct the variable with double quotes instead of single quotes.

Single quotes could mess up new lines (eol).

Author

Commented:
I believe I tried that but will try it again. Thanks
Most Valuable Expert 2011
Top Expert 2016

Commented:
I want to deconstruct this a little bit (copied from the original question).  How does this happen?  What process is changing the XML document (the becomes verb)?  These documents are not very much alike at all - in meaning or content.

For example,
<tag1>
    <tag2>Some Value</tag2>
    <tag3 isNull="false" />
   <tag4>Some other Value</tag4>
</tag1>
becomes
<tag1>
    <tag2>Some Value</tag2>
    <tag3 isNull="false">
   <tag4>Some other Value</tag4>
    </tag3>
    <tag3 isNull="false"></tag3>
</tag1>

Open in new window

Most Valuable Expert 2011
Top Expert 2016
Commented:
Please see http://www.laprbass.com//RAY_temp_perlwite.php to visualize the differences between these XML documents.
<?php // RAY_temp_perlwite.php
error_reporting(E_ALL);
echo '<pre>';

// DOCUMENT 1
$xml = <<<ENDXML
<tag1>
    <tag2>Some Value</tag2>
    <tag3 isNull="false" />
   <tag4>Some other Value</tag4>
</tag1>
ENDXML;
$obj = simplexml_load_string($xml);
var_dump($obj);

echo PHP_EOL;

// DOCUMENT 2
$xml = <<<ENDXML
<tag1>
    <tag2>Some Value</tag2>
    <tag3 isNull="false">
   <tag4>Some other Value</tag4>
    </tag3>
    <tag3 isNull="false"></tag3>
</tag1>
ENDXML;
$obj = simplexml_load_string($xml);
var_dump($obj);

Open in new window

WTF comes to mind ;-)

Author

Commented:
View Source in Firefox shows the correct XML. View Generated Source in Firefox shows the incorrect XML.

Author

Commented:
Thank you Ray for the visualization
Most Valuable Expert 2011
Top Expert 2016

Commented:
That sounds like the problem might be in Firefox.  If your program code is creating a valid XML document, it doesn't seem like FF is rendering it correctly with View Generated Source.

Author

Commented:
I sent the XML using the WCFStorm tool and I get a successful response.

I took the exact same XML and sent it via PHP and I get the "Object reference not set to anything" error.
$arg = 'XML sent using WCFStorm tool';
$c->call('Method Name', $arg);
I am using nusoapclient and Zend
Most Valuable Expert 2011
Top Expert 2016

Commented:
Sorry -- if it's SOAP I have to sign off.  Nothing personal, but SOAP is an impossibly bad protocol, and now that I know it's SOAP, I can accept any outcome, no matter how ridiculous, as plausible.  Ask the publishers if they have a RESTful interface and use if it they do.  It will most likely work correctly and intuitively the first time.  If they do not have a REST interface, ask them for a PHP example using SOAP.  I wish I could be of some help, but life is too short to use and debug SOAP.  It's like being a blind man in a knife fight.

Author

Commented:
They don't have a RESTful interface. I am required to use SOAP. Can someone help?

Author

Commented:
Please ignore the delete request. I have accepted 2 answers as solutions.

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial