replaceAll去掉标签和空格处理

本文介绍了一种使用Java编程语言中的正则表达式来移除字符串中的HTML标签和其他特定字符的方法。通过两个实例展示了如何精确地匹配并替换掉不需要的内容。
package com.org.domain;

public class Test1 {
	public static void main(String[] args) {
		String str1 = "乘坐<b><font color=\"0x000000\">B22路专线到棠东</font>";
		String s = str1.replaceAll("<.*?>", "");//<.*?>去掉<>标签
		System.out.println(s);
		
		String str2 = "乘坐<br>B22路专线到棠东  .";
		//"<br\\s*/?>|<p\\s*/?>|[\\s\\n]" //去掉br p 标签里面的空格与回车/换行的(n)空格
		String a= str2.replaceAll("<br\\s*/?>|<p\\s*/?>|[\\s\\n]", "");//把空格去掉
		System.out.println(a);
	}
}

 

处理 XML 文件时,去除标签内的空白字符(如空格、换行回车)是一个常见的需求。可以通过多种方式实现这一目标,以下是几种常用的方法: ### 使用 Java 解析并清理 XML 中的空白字符 1. **使用 DOM 解析器** 通过 `DocumentBuilderFactory` 创建一个 DOM 解析器,并遍历整个文档以移除空白文本节点。 ```java import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; import org.w3c.dom.Document; import org.w3c.dom.NodeList; import org.w3c.dom.Node; import org.w3c.dom.Element; import java.io.File; public class RemoveWhitespace { public static void main(String[] args) throws Exception { File inputFile = new File("input.xml"); DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); Document doc = dBuilder.parse(inputFile); doc.getDocumentElement().normalize(); removeWhitespaceNodes(doc.getDocumentElement()); // 这里可以添加代码来保存修改后的XML文档 } private static void removeWhitespaceNodes(Element element) { NodeList children = element.getChildNodes(); for (int i = 0; i < children.getLength(); ++i) { Node child = children.item(i); if (child.getNodeType() == Node.TEXT_NODE && child.getNodeValue().trim().isEmpty()) { element.removeChild(child); } else if (child.getNodeType() == Node.ELEMENT_NODE) { removeWhitespaceNodes((Element) child); } } } } ``` 2. **使用 XPath 表达式** 可以利用 XPath 表达式选择所有包含纯空白的文本节点并删除它们[^1]。 ```java import javax.xml.xpath.XPath; import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathExpressionException; import javax.xml.xpath.XPathFactory; import org.w3c.dom.NodeList; import org.w3c.dom.Node; // ... [之前的导入初始化代码] XPath xPath = XPathFactory.newInstance().newXPath(); String expression = "//text()[normalize-space()='']"; try { NodeList emptyTextNodes = (NodeList) xPath.evaluate(expression, doc, XPathConstants.NODESET); for (int i = 0; i < emptyTextNodes.getLength(); i++) { Node node = emptyTextNodes.item(i); node.getParentNode().removeChild(node); } } catch (XPathExpressionException e) { e.printStackTrace(); } ``` ### 使用正则表达式清理 XML 内容 如果不想解析整个 XML 文档结构,可以直接对 XML 字符串应用正则表达式来移除标签之间的空白[^2]。 ```java String xmlContent = "<root>\n <element> some text </element>\n</root>"; // 去除标签间的空白 String cleanedXml = xmlContent.replaceAll(">(\\s+)<", "><"); System.out.println(cleanedXml); ``` 这段代码会匹配所有的 `>` 后跟一个或多个空白字符然后是 `<` 的情况,并将其替换为连续的 `><`,从而有效地去除了标签间的任何空白。 ### 注意事项 - 在进行上述操作之前,请确保备份原始 XML 文件。 - 如果 XML 数据中存在 CDATA 节区或者注释,这些方法可能也会作用于这些部分,因此需要特别注意。 - 对于大型 XML 文件,建议使用 SAX 解析器或者其他流式处理技术以避免内存溢出问题。 以上方法可以帮助您清理 XML 标签内的空白字符。根据具体的应用场景个人偏好选择合适的方法即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值