2013-12-17 47 views
1

我在啓動時將標準XML導入到用於保存和調用應用程序參數的應用程序中。Android - 測試「完好形成」導入時的有效XML

XML更新onPause()但是,如果應用程序因任何原因崩潰,則生成的XML可能無效。

我想能夠測試,看看XML是否有效,如果沒有,然後使用通用設置。

問:如何測試XML以查看它是否有效?

示例XML

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<DecisionList> 
<ExampleSet1> 
    <Value1> 1.0 </Value1> 
</ExampleSet1> 
</DecisionList> 

主要活動

public class MyActivity extends Activity implements OnItemSelectedListener{ 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    try { 
     MyActivity_Preflight.Setup(); 
    } catch (Exception e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 
    // ....... 
} 
} 

預檢活動

public class MyActivity_Preflight { 

public static void Setup() throws Exception{ 

try{ 
XPathFactory factory=XPathFactory.newInstance(); 
XPath xPath=factory.newXPath(); 

File pathTmp = new File(Environment.getExternalStorageDirectory() + "/myApp/Tmp"); 
File xmlDocument = new File(pathTmp + "/tmp.xml"); 

/* 
* Chk to see if XML is Valid Statement block Here 
* if Valid then Continue 
*/ 

InputSource inputSource = new InputSource(new FileInputStream(xmlDocument)); 
XPathExpression tag_Value1 = xPath.compile("/DecisionList/ExampleSet1/Value1"); 
String Value1 = tag_Value1.evaluate(inputSource); 
GlobalVariables.setSeekBarValue1(Float.valueOf(Value1)); 

// if (XMLisNotValid) 
// GlobalVariables.setSeekBarValue1(1.0f); 

    } 
} 
} 

感謝您的時間。

回答

1

您可以驗證使用DocumentBuilderFactory

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
DocumentBuilder db = dbf.newDocumentBuilder(); 
db.parse(pathTmp + "/tmp.xml"); 

如果XML,然後解析其有效的XML,如果沒有它不是一個有效的XML。

+0

感謝Jayamohan,我將如何返回documentBuilderFactory解析方法的t​​rue或false布爾輸出。也就是說,如果它解析然後是真的。謝謝。 – user1540142

+0

如果XML中有任何問題,您應該根據API獲取'SAXException'。 – Jayamohan

+0

再次感謝,你能給我一個例子,當給一個畸形的XML時,處理一個SAXException wherebby而我可以從另一個方法加載設置。非常感謝。 – user1540142

相關問題