如何删除XML中标记之间的空格

Miy*_*iya 8 xml android

我在我的android应用程序中使用Java创建了一个XML文档.我必须在我的应用程序中调用Web服务并将此XML作为参数传递.但我的问题是在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();
Run Code Online (Sandbox Code Playgroud)

XML是:

<subscriber> <UserName>miya</UserName> <Password>today</Password> </subscriber>
Run Code Online (Sandbox Code Playgroud)

请提供有关如何删除UserNamePassword标签之间的空白区域的解决方案.

Kno*_*sos 15

当然,它取决于您自己的XML,但您可以尝试使用正则表达式.

举个例子:

yourXmlAsString.replaceAll(">\\s*<", "><");
Run Code Online (Sandbox Code Playgroud)

将删除每个XML元素之间的所有空格.

  • 正则表达式应该是 "&gt;[\\s\\r\\n]*&lt;" (即 \r, \n 也应该被转义 (2认同)

Pet*_*ego 7

方法documentBuilderFactory.setIgnoringElementContentWhitespace()控制空白创建.在创建之前使用此选项DocumentBuilder.

dbfac.setIgnoringElementContentWhitespace(true);
Run Code Online (Sandbox Code Playgroud)


Gaʀ*_*ʀʀʏ 5

我可以使用以下属性从转换中删除空格/制表符/换行符:

transformer.setOutputProperty(OutputKeys.INDENT, "no");
Run Code Online (Sandbox Code Playgroud)

你把它设置为是。我确信这个问题已经足够老了,现在已经不重要了;但如果将来有人遇到这种情况,将属性设置为no可以拯救我。