问题描述
当前,我正在使用XMLInputFactory
和XMLEventReader
来解析rss数据供稿中的XML。在描述中,它包含使用>
和<
的html标签。 Java将其作为实际的标签读取,并认为描述的末尾,因此将其截断并转到下一个元素。如何从解析中排除标签?
解决方法
我没有太多使用拉式解析器(XMLEventReader
),但是我相信,与SAX解析器一样,它可以将文本节点报告为一系列Characters
事件,而不是作为单个事件,由应用程序将它们串联起来。解析器最有可能选择拆分内容的位置是在实体边界处,以避免在扩展实体时进行字符数据的批量复制。
您可以将每个>
和<
标签临时替换为您知道的特定唯一标签。然后,进行解析,并在完成解析后再次用>
和<
标签替换它们,如以下代码中所示。
String original = "<container>>This< is a >test<</container>";
String newStr = original.replace(">","_TMP_CHARACTER_G_").replace("<","_TMP_CHARACTER_L_");
System.out.println(original + "\n" + newStr);
// Print <container>>This< is a >test<</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_",">").replace("_TMP_CHARACTER_L_","<");
System.out.println(theConvertedTag);
// Print the original String <container>>This< is a >test<</container>