2011-07-30 24 views
5

Java'da SAXParserFactory ile sadece xml'i ayrıştırabilirim, ama bazı dosyalarda, linear3D="0.5" vb.Java SAX ile XML ayrıştırmak, büyük/küçük harf duyarlı.

gibi küçük olmayan öznitelikler var

attributes.getValue(attr) 
attributes.getValue(attr) 

case- duyarsız, böylece attributes.getValue("linear3d") "0,5" döndürür.

Bir çözüm, önce bir dize olarak dosyayı okumak, küçük harfe dönüştürmek ve sonra 'i ayrıştırmak olacaktır, çünkü bu xml türünde bir belirsizlik yoktur. Ancak, bu daha basit bir şekilde fabrikaya veya benzerine bir miktar bayrak ekleyerek yapılabilir mi?

+0

aşağıdaki yöntemi yazın. XML büyük/küçük harfe duyarlıdır. Sözleşmelere aykırı davranma. –

+0

Maalesef, hemen hemen .xml standartlarını yerine getiren .flame dosyalarını ayrıştırmaya çalışıyorum. 3. parti bir yazılım tarafından oluşturulduğundan, sözdizimi üzerinde kontrol sahibi değilim. –

+0

Bu ne anlama geliyor? Her zaman linear3d veya linear3D olacağını garanti edemez misiniz? –

cevap

4

Dosyanın tamamını küçük harfe dönüştürmek yerine, aşağıdaki yaklaşım daha iyi olur. Bu, seçilen etiketin tüm özniteliklerini yineler ve davanızı görmezden gelir. DefaultHandler ait implementaion İçinde

Sen yerine kendi modelini değiştirmek gerekir

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; 
} 
İlgili konular