2010-11-25 71 views
6

Creé un documento XML usando Java en mi aplicación de Android. Tengo que llamar a un servicio web en mi aplicación y pasar este XML como argumento allí. Pero mi problema es que creó un espacio en blanco entre cada etiqueta en el XML.Cómo eliminar los espacios en blanco entre etiquetas en XML

DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance(); 
DocumentBuilder docBuilder = dbfac.newDocumentBuilder(); 
Document doc = docBuilder.newDocument(); 

Element root = doc.createElement("subscriber"); 
doc.appendChild(root); 

//creating child node for username 
EditText txtusername=(EditText)findViewById(R.id.txtUserName); 
subscriber[0]=String.valueOf(txtusername.getText()); 
Element UserName=doc.createElement("UserName");    
UserName.setTextContent(subscriber[0]); 
root.appendChild(UserName); 

//creating child node for PASSWORD 
EditText txtPassword=(EditText)findViewById(R.id.txtPassword); 
subscriber[1]=String.valueOf(txtPassword.getText()); 
Element Password=doc.createElement("Password"); 
Password.setTextContent(subscriber[1]); 
root.appendChild(Password); 

//set up a transformer 
TransformerFactory transfac = TransformerFactory.newInstance(); 
Transformer trans = transfac.newTransformer(); 
trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); 
trans.setOutputProperty(OutputKeys.INDENT, "yes"); 

//create string from xml tree 
StringWriter sw = new StringWriter(); 
StreamResult result = new StreamResult(sw); 
DOMSource source = new DOMSource(doc); 
trans.transform(source, result); 
String xmlString =sw.toString(); 

url = new URL("http://192.168.70.14/NewsLetter/subscribing.php?register= " + xmlString); 

conn = (HttpURLConnection) url.openConnection(); 
conn.addRequestProperty("Content-Type", "text/xml; charset=UTF-8"); 
dis = conn.getInputStream(); 

El XML es:

<subscriber> <UserName>miya</UserName> <Password>today</Password> </subscriber> 

Por favor de la solución de cómo eliminar los espacios en blanco entre las UserName y Password etiquetas.

+0

favor mostrar el XML – Mikpa

+0

Miya hoy Miya

+0

Parece que está alimentando a su documento XML como entrada para una transformación XSLT. Hay varias maneras de tratar con espacio en blanco solo los nodos de texto en XSLT. Por favor, vuelva a etiquetar y publique su hoja de estilo para que podamos ayudarlo. –

Respuesta

12

Por supuesto, depende de su XML en sí, sin embargo, puede intentar expresiones regulares.

A modo de ejemplo:

yourXmlAsString.replaceAll(">\\s*<", "><"); 

suprimiría cualquier espacio en blanco entre cada elemento XML.

+1

Cuando uso la expresión regular anterior, muestra un error: Inavalide expresión regular – Miya

6

Método documentBuilderFactory.setIgnoringElementContentWhitespace() controla la creación de espacios en blanco. Use esto antes de crear un DocumentBuilder.

dbfac.setIgnoringElementContentWhitespace(true); 
+0

Ups. Parámetro incorrecto Debería ser 'verdadero'. Corregido –

+0

¿Esto se cumple al exportar el documento XML o al analizar la cadena XML? (en mi caso, no ayudó a superar los problemas al analizar XML y espacios en blanco crea nodos que no quiero) – Evusas

4

que fue capaz de eliminar los espacios en blanco/tabs/saltos de línea de mi transformación utilizando la siguiente propiedad:

transformer.setOutputProperty(OutputKeys.INDENT, "no"); 

Tenías que establece en sí. Estoy seguro de que esta pregunta es lo suficientemente antigua como para que no importe ahora; pero si alguien se encuentra con esto en el futuro, estableciendo la propiedad en no me salvó.

Cuestiones relacionadas