Java SAX解析器startElement看不到标记

Java SAX解析器startElement看不到标记,java,android,xml-parsing,sax,saxparser,Java,Android,Xml Parsing,Sax,Saxparser,示例XML: <rss version="2.0"> <channel> <title>The Channel Title Goes Here</title> <description> The explanation of how the items are related goes here </description> <link>/events</link> <item> <

示例XML:

<rss version="2.0">
<channel>
<title>The Channel Title Goes Here</title>
<description>
The explanation of how the items are related goes here
</description>
<link>/events</link>
<item>
<title>
<![CDATA[ some title ]]>
</title>
<description>
<![CDATA[ ]]>
</description>
<content:encoded xmlns:content="http://stuff.com">
<![CDATA[ 
    <event>
        <name>some name</name>
        <startdate>some date</startdate>
        <starttime>some time</starttime>
        <location>some place</location>
        <description></description>
    </event>
]]>
</content:encoded>
</item>
<item>
</item>
...
</channel>
</rss>
这与CDATA以及如何设置解析器有关吗?以下是我如何实例化所有内容:

URL sourceUrl = new URL(kEventsURL);

SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();

MyXMLHandler myXMLHandler = new MyXMLHandler();
xr.setContentHandler(myXMLHandler);
xr.parse(new InputSource(sourceUrl.openStream()));

阅读第一个答案,了解为什么它不能识别标签开始。您可能应该使用元素中的文本运行另一个解析器。

阅读第一个答案,了解它为什么不能识别标记start。您可能应该使用元素中的文本运行另一个解析器。

而不是“localName”,尝试“qName”而不是“localName”,尝试“qName”

这并不奇怪,不是吗?CDATA节通常包含不符合XML格式或结构的文本,因此将被解析器忽略(意思是:它被视为纯文本)。我不知道有什么设置可以改变这种标准化行为,但在您的例子中,CDATA部分基本上是另一个XML层次结构,我不明白为什么您不能将其委托给另一个SAX解析器实例。这并不奇怪,不是吗?CDATA节通常包含不符合XML格式或结构的文本,因此将被解析器忽略(意思是:它被视为纯文本)。我不知道有什么设置可以改变这种标准化行为,但在您的例子中,CDATA部分基本上是另一个XML层次结构,我不明白为什么您不能将其委托给另一个SAX解析器实例。我如何从URL数据中获取字符串?我可以删除cdata标记并正常解析它。如果你要删除字符串,你将彻底扫描字符串数据一次。此外,还会有一些字符串操作开销-对象创建。但从性能上看,它可能真的很小。删除了字符并运行了解析器,它就工作了。谢谢你的帮助。我如何从URL数据中获取字符串?我可以删除cdata标记并正常解析它。如果你要删除字符串,你将彻底扫描字符串数据一次。此外,还会有一些字符串操作开销-对象创建。但从性能上看,它可能真的很小。删除了字符并运行了解析器,它就工作了。谢谢你的帮助。
URL sourceUrl = new URL(kEventsURL);

SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();

MyXMLHandler myXMLHandler = new MyXMLHandler();
xr.setContentHandler(myXMLHandler);
xr.parse(new InputSource(sourceUrl.openStream()));