Avatar of edc

asked on 

Validating XML as it is being received over a Java TCP server socket

Hi all,
I should start off by saying that I am transitioning to Java from other languages (C/C++, C#) so I am not familiar with much of the existing functionality that is inherent to the Java language, or the many libraries that have been written to supplement functionality that is not built into the core code.  

I have a Java ServerSocket which will be receiving XML messages.  The fundamental question I have is - how do I know if and when I have received the whole XML message?  

If there were a way to ensure that in every case the XML message would arrive intact without timeouts or in transit errors then the task would be as simple as looking for the closing root tag, but this is, obviously not the real world.

So the different possible problems that I can see arising are:

* The client stalls and stops sending data.  This is easily handled by setting a timeout on the socket.
* The client sends an invalid XML message.
* The client sends a valid XML message, but does not conform to an XML message that the application does not know how to process (i.e. doesn't conform to a DTD or XSD)

So the though I have as to how to handle these scenarios is to write the incoming data to a stream which can validate the XML as it arrives for immediate problems, will recognize when the XML message is complete, and will validate it against a DTD or XSD.

Does such an animal already exist, or is there a ready way to develop such a thing?

Avatar of undefined
Last Comment
Avatar of Am P
Am P
Flag of India image

Blurred text
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
Avatar of edc


Thank you amit_n_panchal.  There was an implementable idea in one of the links regarding sending a token after the message which will give the code a specific token to key on when it sees it in the stream.

Some things are just too obvious when you are well down into the details. :o)

Extensible Markup Language (XML) refers to the encoding of documents such that they can be read by both machines and humans. XML documents use tags to show the beginning and end of a set of data. XML is used extensively on websites to show volumes of data, and is the default for a number of office productivity suites. This topic includes discussions of XML-related technologies, such as XQuery (the XML Query language), XPath (the XML Path language), XSLT (eXtensible Stylesheet Language Transformations), XLink (the XML Linking language) and XPointer (the XML Pointer language).

Top Experts
Get a personalized solution from industry experts
Ask the experts
Read over 600 more reviews


IBM logoIntel logoMicrosoft logoUbisoft logoSAP logo
Qualcomm logoCitrix Systems logoWorkday logoErnst & Young logo
High performer badgeUsers love us badge
LinkedIn logoFacebook logoX logoInstagram logoTikTok logoYouTube logo