2011-07-30 55 views
5

我可以解析XML只是在SAXParserFactory的罰款Java的,但在一些文件, 則不存在一些非小寫的屬性,如linear3D="0.5"在java中用SAX解析XML,不區分大小寫。

我想以某種方式使

attributes.getValue(attr) 

情況 - 敏感的,以便attributes.getValue("linear3d")返回「0.5」。

一種解決方案是先將文件讀取爲字符串,然後轉換爲小寫,然後解析,因爲在這種類型的xml中執行此操作時不存在歧義。 但是,通過在工廠或類似地方添加一些標誌,這可以更簡單地完成嗎?

+0

你還是更改模型。 XML區分大小寫。不要違背慣例。 –

+0

好吧,不幸的是,我正試圖解析.flame文件,它幾乎滿足.xml標準。我無法控制其語法,因爲它們是由第三方軟件創建的。 –

+0

這是什麼意思?你沒有任何保證,它總是linear3d或linear3D? –

回答

4

而不是將整個文件轉換爲小寫,以下方法更好。這遍歷了所選標籤的所有屬性,並將其忽略不計。

的DefaultHandler的implementaion裏面寫下面的方法

private String getValueIgnoreCase(Attributes attributes, String qName){ 
    for(int i = 0; i < attributes.getLength(); i++){ 
     String qn = attributes.getQName(i); 
     if(qn.equalsIgnoreCase(qName)){ 
      return attributes.getValue(i); 
     } 
    } 
    return null; 
}