使用Regex获取所有无效XML标签的列表?

时间:2014-01-27 17:31:50

标签: java xml regex

我的XML包含在一个字符串中,该字符串包含许多元素的无效xml标记,如果标记以数字开头,则标记为“无效”。例如,以下内容无效:

 <1>....</1>, <123abc>, etc. 

在XML中,我们会将某些标记识别为无效:

 <tag1> ----> valid tag
     <1tagname>....</1tagname> --->invalid tagname
     <2tagname>....</2tagname> --->invalid tag name
 </tag1> ----> valid tag

我想获取一个无效的xml标签列表,我想添加一个特殊字符串作为前缀,让我们说“item”,以便将无效转换为有效的标签名称。

我正在使用Java语言兼容的正则表达式。

2 个答案:

答案 0 :(得分:1)

您可以使用:

String result = yourstr.replaceAll("(?<=</?)(?=[0-9])", "item");

答案 1 :(得分:-1)

您可以使用堆栈。

<强>解释

就像括号表达式有效一样。 你的代码应该像这样工作:

  1. 阅读xml
  2. 对于每个开始标记,将其推入堆栈
  3. 对于每个结束标记,将其与堆栈顶部进行比较
  4. 如果不匹配 - 标记为问题 - 添加前缀
  5. 如果匹配 - 弹出堆栈
  6. 完成读取xml并且堆栈中有元素 - 添加前缀并关闭标记
  7. 这将解决简单案例。 有一些边缘情况,比如在合法标签内有不匹配的结束标签,可能还有更多