当xml中包含逗号时,如何拆分逗号分隔的xml字符串?

时间:2017-07-11 05:46:27

标签: java

我有一个包含多个xml结构的字符串,如下所示:

cv::Vec4b pixVal = mat.at<cv::Vec4b>(0, 0);

现在我想使用逗号分隔符拆分此字符串。但我无法做 str.split(&#34;,&#34;),因为这会给我4个不同的字符串。此外,我无法执行 str.split(&#34;&gt; *&lt;&#34;),因为它会从分割字符串中删除结束和开始括号。我想我可以使用Java的Pattern类,但我不确定我应该使用的模式。

我不能使用xml解析器,因为如果你看得正确,字符串不是有效的xml。

根据我的要求,有人可以建议我分割字符串的方法吗?

2 个答案:

答案 0 :(得分:2)

我认为最简单,最安全的方法是上游到XML的源代码并修复格式。这是不可能的,您可以尝试使用以下内容删除分隔XML标记的所有逗号:

String str = "<a><f dof=\"x,y\" /></a>,<a><f dof=\"m,n\" /></a>";
str = str.replaceAll("(</\\.*>)\\s*,\\s*(<.*?>)", "$1$2");
System.out.println(str);

现在您可能有一个格式良好的XML字符串,可以使用标准方法进行解析。

<强>输出:

<a><f dof="x,y" /></a><a><f dof="m,n" /></a>

在这里演示:

Rextester

答案 1 :(得分:1)

你可以试试这个 -

首先将'>' & '<'之间的逗号替换为其他字符,例如'#'

像这样,

String str = "<a><f dof=\"x,y\" /></a>,<a><f dof=\"m,n\" /></a>";

str = str.replaceAll(">,<",">#<");

而不是那个新角色,

String[] strArray = str.split("#");

希望这会对你有所帮助:)。