我以前也遇到過類似你這樣的問題。我不認爲Android有用於讀取res-> values XML文件中的鍵值對的工具。 將XML文件保存在資產目錄中而不是res-> values目錄中。然後,從您的活動中讀取資產文件夾中的XML文件。 我認爲下面的代碼有效。我沒有測試它。如果它不起作用,請告訴我。
在您的資產文件夾中,您可以放入名爲「myPoints」的XML文檔。
<resources>
<point Pointz="Point1">
<item Xpoint="100.340"></item>
<item Ypoint="200.000"></item>
</point>
<point Pointz="Point2">
<item Xpoint="350.450"></item>
<item Ypoint="400.900"></item>
</point>
<end></end>
</resources>
在你的活動:
Double Xpoint, Ypoint;
int PointNum;
//Call the ReadXML() method somewhere in onCreate
private void ReadXML() {
try {
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
GetXML_Handler doingWork = new GetXML_Handler();
xr.setContentHandler(doingWork);
InputSource Isource = new InputSource(this.getActivity().getAssets().open("myPoints.xml"));
xr.parse(Isource);
} catch (IOException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
}
//This is a private class inside whatever Acitivity u are in.
private class GetXML_Handler extends DefaultHandler {
boolean foundWord = false;
int i = 0;
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
if (localName.equals("point")) {
foundWord = true;
PointNum = attributes.getValue("Pointz"); //so PointNum will either be saved as "Point1" or "Point2"
}
} else if (foundWord == true && localName.equals("item")) {
Xpoint = attributes.getValue(0);
Ypoint = attributes.getValue(1);
} else if (localName.equals("end")) {
foundWord = false;
}
} // End of startElement
}// End of Private Class GetXML_Handler
如果你堅持節約水庫裏面的XML文件>值的文件夾,U可以節省分2種方式:1 的方法是在X和Y之間交替點。
<string-array name="points">
<item>100.340</item> //X coordinate #1
<item>200.000</item> //Y coordinate #1
<item>350.450</item> //X coordinate #2
<item>400.900</item> //Y coordinate #2
</string-array>
第二種方法是將它保存爲2個數組。一個數組用於X座標,另一個數組用於Y座標。
<string-array name="Xpoints">
<item>100.340</item> //X coordinate #1
<item>350.450</item> //X coordinate #2
</string-array>
<string-array name="Ypoints">
<item>200.000</item> //Y coordinate #1
<item>400.900</item> //Y coordinate #2
</string-array>
這些點有模式還是可以計算的? – wtsang02 2013-02-17 17:00:54
不,他們沒有圖案... – Johnny 2013-02-17 17:02:08