如果标记的内容包含>还是<?

czfnxgou  于 2021-07-06  发布在  Java
关注(0)|答案(2)|浏览(296)

目前,我正在使用 XMLInputFactory 以及 XMLEventReader 从rss数据源解析xml。在描述中,它包含使用 > 以及 < . java将其读取为实际的标记,并认为描述结束了,因此它切断并转到下一个元素。如何从解析中排除标记?

06odsfpq

06odsfpq1#

我不使用pull解析器( XMLEventReader )很多,但我相信,与sax解析器一样,它可以将文本节点报告为 Characters 事件,而不是作为单个事件,并且由应用程序来连接它们。解析器最有可能选择在实体边界处分割内容,以避免在扩展实体时大量复制字符数据。

bzzcjhmw

bzzcjhmw2#

你可以临时替换 > 以及 < 用一个你知道的独特的标签来标记。然后,进行解析,并用 > 以及 < 在完成解析后再次使用标记,如下面的代码中所示。

String original = "<container>&gt;This&lt; is a &gt;test&lt;</container>";
String newStr = original.replace("&gt;", "_TMP_CHARACTER_G_").replace("&lt;", "_TMP_CHARACTER_L_");
System.out.println(original + "\n" + newStr);
// Print <container>&gt;This&lt; is a &gt;test&lt;</container>
// and <container>_TMP_CHARACTER_G_This_TMP_CHARACTER_L_ is a _TMP_CHARACTER_G_test_TMP_CHARACTER_L_</container>

// [Do your parsing here]

String theTagYouWant = newStr;
String theConvertedTag = theTagYouWant.replace("_TMP_CHARACTER_G_", "&gt;").replace("_TMP_CHARACTER_L_", "&lt;");
System.out.println(theConvertedTag);
// Print the original String <container>&gt;This&lt; is a &gt;test&lt;</container>

相关问题