Solved

XML Closing Tags

Posted on 2012-12-25
16
461 Views
Last Modified: 2013-02-05
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
0
Comment
Question by:perlwhite
  • 8
  • 5
  • 2
  • +1
16 Comments
 
LVL 39

Accepted Solution

by:
Pratima Pharande earned 100 total points
ID: 38720618
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
0
 

Author Comment

by:perlwhite
ID: 38720636
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?
0
 
LVL 11

Expert Comment

by:mcnute
ID: 38720993
Are you declaring your xml document as standards are requiring?

<?xml version="1.0"?>

Open in new window

0
Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

 
LVL 109

Expert Comment

by:Ray Paseur
ID: 38721064
... it has ignored the closing tag ...
What is "it" in that statement?  How exactly are you constructing the XML document?
0
 

Author Comment

by:perlwhite
ID: 38721117
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.
0
 
LVL 11

Expert Comment

by:mcnute
ID: 38721123
Try to construct the variable with double quotes instead of single quotes.

Single quotes could mess up new lines (eol).
0
 

Author Comment

by:perlwhite
ID: 38721131
I believe I tried that but will try it again. Thanks
0
 
LVL 109

Expert Comment

by:Ray Paseur
ID: 38721272
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

0
 
LVL 109

Assisted Solution

by:Ray Paseur
Ray Paseur earned 100 total points
ID: 38721279
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 ;-)
0
 

Author Comment

by:perlwhite
ID: 38721342
View Source in Firefox shows the correct XML. View Generated Source in Firefox shows the incorrect XML.
0
 

Author Comment

by:perlwhite
ID: 38721345
Thank you Ray for the visualization
0
 
LVL 109

Expert Comment

by:Ray Paseur
ID: 38721372
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.
0
 

Author Comment

by:perlwhite
ID: 38737885
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
0
 
LVL 109

Expert Comment

by:Ray Paseur
ID: 38738496
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.
0
 

Author Comment

by:perlwhite
ID: 38796591
They don't have a RESTful interface. I am required to use SOAP. Can someone help?
0
 

Author Comment

by:perlwhite
ID: 38857924
Please ignore the delete request. I have accepted 2 answers as solutions.
0

Featured Post

Networking for the Cloud Era

Join Microsoft and Riverbed for a discussion and demonstration of enhancements to SteelConnect:
-One-click orchestration and cloud connectivity in Azure environments
-Tight integration of SD-WAN and WAN optimization capabilities
-Scalability and resiliency equal to a data center

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
PHP Query return divisible by 3 3 26
Uploading a CSV Data Import via PHP & MySql 3 33
Echo Multiple values from multiple records 19 41
Ahax pagination 9 33
Developers of all skill levels should learn to use current best practices when developing websites. However many developers, new and old, fall into the trap of using deprecated features because this is what so many tutorials and books tell them to u…
These days socially coordinated efforts have turned into a critical requirement for enterprises.
The viewer will learn how to dynamically set the form action using jQuery.
The viewer will learn how to count occurrences of each item in an array.

828 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question