2013-07-02 65 views
1

解析字符串我有很簡單的XML是這樣的:不能用簡單的XML

<EncryptedToken>11d8575638eaa52b</EncryptedToken> 

這是我爲它的Java類:

@Root 
public class EncryptedTokenDto { 
@Element(name = "EncryptedToken", required = false) 
private String encryptedToken; 

public String getEncryptedToken() { 
    return encryptedToken; 
} 

public void setEncryptedToken(String encryptedToken) { 
    this.encryptedToken = encryptedToken; 
} 

}

但是當我嘗試解析這個xml encryptedToken始終是null。我的代碼有什麼問題?

UPDATE:

這裏是main我的示例代碼:

Serializer serializer = new Persister(); 

    EncryptedTokenDto encryptedTokenDto = null; 
    try { 
     String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <EncryptedToken>11d8575638eaa52b</EncryptedToken>"; 
     encryptedTokenDto = serializer.read(EncryptedTokenDto.class, xml); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    if (encryptedTokenDto != null) { 
     System.out.println(encryptedTokenDto.getEncryptedToken()); 
    } 

其實這不是真正的代碼,因爲我收到了XML Web服務,但一切運作良好,問題只是在XML解析。

更新2:

我發現,如果我改變了這樣的XML:

String xml = "<root> \n <EncryptedToken>11d8575638eaa52b</EncryptedToken> \n </root>"; 

而寫的類是這樣的:

@Root 
public class EncryptedTokenDto { 
@Element(name = "EncryptedToken", required = false) 
private String encryptedToken; 

public String getEncryptedToken() { 
    return this.encryptedToken; 
} 

public void setEncryptedToken(String encryptedToken) { 
    this.encryptedToken = encryptedToken; 
} 
} 

Everyrthing是確定的。

所以我的問題是:怎麼可能來解析XML文檔,而無需使用SimpleXML

注根relement:我需要使用SimpleXML的,我不能使用任何其他解析器。

+2

您的主要位置在哪裏? –

+0

嘗試使用不同的變量名稱,並最終找到它。像'encryptedToken','encryptedToken1','encryptedToken2'等等。問題可能出現在'returned encryptedToken'中,可能會嘗試將它改爲'return super.encryptedToken;'或'return this.encryptedToken;'。 – g00dy

+0

http://developer.android.com/training/basics/network-ops/xml.html。檢查文檔。 – Raghunandan

回答

1

嘗試@Text,而不是@Element,它會工作然後