【问题标题】:remove numeric xml tag using java使用java删除数字xml标签
【发布时间】:2016-08-25 23:04:30
【问题描述】:

我有以下 xml:

<?xml version=\"1.0\"?>
<1>
<TITLE>A Sample Article</TITLE>
<SECT>The First Major Section      <PARA>This section will introduce a subsection.</PARA>
    <2>
    <SECT>The Subsection Heading         <PARA>This is the text of the subsection.         </PARA>      
    </SECT>
</SECT>
</ARTICLE>

我想使用 Java 删除数字标签“”和“”。

解析器不能作为无效的 xml 工作。我需要另一种解决方案,例如正则表达式或任何其他想法。

【问题讨论】:

  • 1&lt;1&gt; 变量,还是始终是文字1
  • @Bohemian 里面还有一个&lt;2&gt;。目前尚不完全清楚已尝试过什么以及存在什么问题。
  • 效果很好。想知道我们是否需要将标签 和 分别替换为 <_1> 和 <_2> ,那么正则表达式是什么。我是正则表达式的新手,不胜感激。谢谢
  • 解析器将无法工作,因为它是无效的 xml。 我怀疑对此进行了很多研究。如果解析器无法处理无效的 xml,则不会进行太多解析,并且大多数网站都会显示空白页,因为那里有很多垃圾 xml,而这个 xml 并不是那个坏的. :P 我没有用这个特定的数据尝试过。但我看不出为什么,例如一个简单的 SAXReader 会因此而绊倒。你不要让处理程序对你不想要的东西做任何事情,就是这样。 SAX 也不介意缺少 &lt;ARTICLE&gt; 标头,如果您真的需要它来做某事,您可能会伪造它。
  • @Arjan 我尝试了 SAXReader,我收到以下错误“线程“主”org.apache.commons.jxpath.JXPathException 中的异常:Dom4J 解析器错误;文档第 1 行的错误:根元素之前的文档中的标记必须格式正确。嵌套异常:根元素之前的文档中的标记必须格式正确。在 test.pkg.RegExp.parseXML(RegExp.java:71) 在 test.pkg.RegExp.main(RegExp.java:56) '

标签: java regex xml


【解决方案1】:

您可以只使用replaceAll 方法。

String str = "YOUR XML HERE";
str = str.replaceAll("<[12]>", "");

IDEOne demo

或者正如 Boheamian 在他的评论中指出的那样,您可以使用 \d 数字快捷方式:

str = str.replaceAll("<\\d>", "");

顺便说一句,如果你有多个 &lt;1&gt;&lt;2&gt;,比如 &lt;n&gt;n 任何数字,那么你可以使用:

str = str.replaceAll("<\\d+>", "");

【讨论】:

  • 甚至replaceAll("&lt;\\d&gt;", "")
  • @Bohemian 好吧,我把字符类 [12] 因为 OP 说 1 和 2 但肯定。我已经用你的评论更新了答案
  • 非常感谢,我修改了代码以使用以下正则表达式将出现的任何无效数字标签(例如 )替换为有效标签 <_number> ()", "$1_$2/$3");'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-31
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 2019-11-15
  • 1970-01-01
相关资源
最近更新 更多