簡體   English   中英

無法使用sax解析器解析標簽

[英]not able to parse tags using sax parser

以下是我的xml:

 <Body>
  <tag1 xmlns=""> <innerTag></innerTag> </tag1>
  </Body>

問題是我無法在<tag1></tag1>獲取字符串,即<innerTag></innerTag> 以下是我的邏輯:

public void startElement(final String uri, final String localName,
            final String qName, final Attributes attributes)
            throws SAXException {
        if ("tag1".equalsIgnoreCase(qName)){
            inTag1 = true;
            System.out.println("start");
        }
}


public void endElement(final String uri, final String localName,
            final String qName) throws SAXException {
        if ("tag1".equalsIgnoreCase(qName)) {
            System.out.println("end");
            inTag1 = false;
        }
}

public void characters(final char[] ch, final int start, final int length) {

        if (inTag1) {
            System.out.println("@@@" + new String(ch, start, length));
        }
    }
}

但這給了我空的輸出。 誰能幫忙。

在您對UVM答案的評論中,您寫了

實際上,內部標記是該xml中的一種xml。 所以我希望整體上

沒有辦法告訴SAX解析器不要處理元素中的所有XML並以字符串形式返回整個內容。 本質上,您有兩個選擇:

  • 通過偵聽所有SAX事件並自己構建XML字符串來重建XML字符串,或者
  • 如果您要控制XML文檔,請嘗試將其格式更改為類似

     <Body> <tag1 xmlns=""><![CDATA[ <innerTag></innerTag> ]]></tag1> </Body> 

您需要檢查"tag1" "innerTag"

if ("innerTag".equalsIgnoreCase(qName)){
            inTag1 = true;
            System.out.println("start");
        }

基本上,您的innerTag是tag1的子元素。因此,SAX解析器會繼續對其進行解析,因為對於它而言,直到有效的XML元素為止。

暫無
暫無

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

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