Java 正则表达式还是 XML 解析器?
我想删除任何标签,例如
<p>hello <namespace:tag : a>hello</namespace:tag></p>
成为
<p> hello hello </p>
如果它是正则表达式,由于某种原因现在正在工作,那么最好的方法是什么?任何人都可以帮忙吗?
(<|</)[:]{1,2}[^</>]>
编辑: 额外
I want to remove any tags such as
<p>hello <namespace:tag : a>hello</namespace:tag></p>
to become
<p> hello hello </p>
What is the best way to do this if it is regex for some reason this is now working can anyone help?
(<|</)[:]{1,2}[^</>]>
edit:
added
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
一定要使用 XML 解析器。 正则表达式不应用于解析 *ML
Definitely use an XML parser. Regex should not be used to parse *ML
您不应该将正则表达式用于这些目的,使用诸如
lxml
或 BeautifulSoup这是一个 原因为什么你不应该用正则表达式解析html/xml。
You should not use regex for these purposes use a parser like
lxml
or BeautifulSoupHere is a reason why you should not parse html/xml with regex.
如果您只是想从一些简单的 XML 中提取纯文本,最好的(最快、最小的内存占用)是对数据运行 for 循环:
PSEUDOCODE BELOW
注意:这如果你在解析中遇到 CDATA、JavaScript 或 CSS 之类的东西,就会崩溃。
所以,总结一下......如果很简单,请执行上面的操作而不是正则表达式。如果不是那么简单,请听听其他人的意见并使用高级解析器。
If you're just trying to pull the plain text out of some simple XML, the best (fastest, smallest memory footprint) would be to just run a for loop over the data:
PSEUDOCODE BELOW
Note: This will break if you encounter things like CDATA, JavaScript, or CSS in your parsing.
So, to sum up... if it's simple, do something like above and not a regular expression. If it isn't that simple, listen to the other guys an use an advanced parser.
这是我个人用于解决java中类似问题的解决方案。用于此目的的库是 Jsoup :http://jsoup.org/。
在我的特定情况下,我必须解开包含具有特定值的属性的标签。您会看到这段代码中反映出来,它不是这个问题的确切解决方案,但可以帮助您解决问题。
This is a solution I personally used for a likewise problem in java. The library used for this is Jsoup : http://jsoup.org/.
In my particular case I had to unwrap tags that had an attribute with a particular value in them. You see that reflected in this code, it's not the exact solution to this problem but could put you on your way.