晚安堆栈溢出!
今晚,我尝试从解析为字符串的 XML 中删除“ header ”,并使用 ReplaceAll 删除以下内容:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
来自字符串。因为它将与另一个 XML 字符串连接,所以离开它就会留下其中的两个。
所以我尝试了:
// getXML already has my XML.
getXML = getXML.replaceAll("<?xml version="1.0" encoding="UTF-8" standalone="no"?>", "");
由于字符串内部有“”,因此无法编译。然后我尝试使用转义序列:
String headerXMLString = ("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>");
getXML = getXML.replaceAll(headerXMLString, "");
这也失败了,当程序本身运行时,我假设由于转义符(\),它不会删除字符串
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
因为字符串在技术上是不一样的。
如何解决这个问题?非常感谢任何和所有的帮助。
最佳答案
不要使用replaceAll()
,它会进行正则表达式搜索。
请改用 replace()
,它使用纯文本搜索。
getXML = getXML.replace(headerXMLString, "");
请注意,尽管名称存在不幸的差异,replace()
仍然会替换找到的所有 出现的地方。
更好的方法是使用正则表达式来匹配 XML header ,无论它包含什么:
getXML = getXML("^<?xml.*?\\?>", "");
如果没有标题,这也不会执行任何操作。
关于Java使用replaceAll和转义字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23534131/