2010-11-25 16 views
6

Ich habe ein XML-Dokument mit Java in meiner Android-Anwendung erstellt. Ich muss in meiner Anwendung einen Webservice aufrufen und diesen XML-Code als Argument übergeben. Aber mein Problem ist dort ein Leerzeichen zwischen jedem Tag in der XML erstellt.So entfernen Sie die Leerzeichen zwischen den Tags in 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(); 

Die XML ist:

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

Bitte die Lösung geben, wie die weißen Zwischenräume zwischen den UserName und Password-Tags zu entfernen.

+0

zeigen Sie bitte die XML – Mikpa

+0

Miya heute Miya

+0

Es sieht aus wie Sie Ihr XML-Dokument als Eingabe für eine XSLT-Transformation füttern. Es gibt mehrere Möglichkeiten, mit Textknoten in XSLT umzugehen, die nur aus Leerzeichen bestehen. Bitte, speichern und posten Sie Ihr Stylesheet, damit wir Ihnen helfen können. –

Antwort

12

Natürlich hängt es von Ihrem XML selbst ab, jedoch könnten Sie reguläre Ausdrücke versuchen.

Als Beispiel:

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

Würden alle Leerzeichen zwischen jedem XML-Elemente entfernen.

+1

Wenn ich den obigen regulären Ausdruck verwende, zeigt es einen Fehler: Inavalide regulären Ausdruck – Miya

6

Die Methode documentBuilderFactory.setIgnoringElementContentWhitespace() steuert die Erstellung von Leerzeichen. Verwenden Sie dies, bevor Sie eine DocumentBuilder erstellen.

dbfac.setIgnoringElementContentWhitespace(true); 
+0

Ups. Falscher Parameter. Sollte "wahr" sein. Korrigiert. –

+0

Hält dies beim Exportieren des XML-Dokuments oder beim Analysieren der XML-Zeichenfolge an? (In meinem Fall hat es nicht geholfen, Probleme beim Parsen von XML zu lösen und Leerzeichen erzeugt Knoten, die ich nicht will) – Evusas

4

konnte ich Leerzeichen/Tabs/Zeilenumbrüche aus meiner Transformation unter Verwendung der folgenden Eigenschaft entfernen:

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

Sie es auf yes gesetzt hatte. Ich bin mir sicher, dass diese Frage alt genug ist, dass es jetzt keine Rolle spielt. Aber wenn jemand in Zukunft darauf stoßen wird, hat mich die Einstellung no gerettet.

Verwandte Themen