簡體   English   中英

Java SAX解析器startElement沒有看到標簽

[英]Java SAX parser startElement not seeing tags

樣本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>

我的SAX解析器startElement方法從不進入以下if語句,但是sysout將“事件”輸出到logcat。 為什么它從未找到localName.equals("event")true

@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException 
{
    System.out.println(localName);

    if (localName.equals("event"))      // <-- never goes in here
    {
        // do stuff
    }
}

這與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()));

在這里閱讀第一個答案以了解為什么它不能識別標簽開始。 您可能應該使用來自element的文本運行另一個解析器。

嘗試使用“ qName”代替“ localName”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM