簡體   English   中英

Android-導入時測試“格式正確”的有效XML

[英]Android - Test For “Well Formed” Valid XML on import

我在啟動時將標准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);

  }
 }
}

謝謝你的時間。

您可以使用DocumentBuilderFactory進行驗證

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

如果XML解析,則其為有效XML,如果不是,則為無效XML。

暫無
暫無

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

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