У меня есть XML-файл. Структура файла XML ЗДЕСЬ:Ошибка при анализе XML-файла с помощью Xml DOMParser: Android
<albumlist>
<album value="Enrique Iglesias"><details value="1995"/>
<imageid value="eenrique"/>
<songs value="No Llores Por Mi">
<lyrics>hhhehhehhehe </lyrics>
</songs>
<songs value="Trapecista">
<lyrics>hhhehhehhehe </lyrics>
</songs>
<songs value="Por Amarte">
<lyrics>hhhehhehhehe </lyrics>
</songs>
</album>
</albumlist>
Я хочу, чтобы извлечь текст для perticular песни для perticuler альбома. Для этого я написали код, который показывает мне список песен, но для этой композиции в сумерках я не могу извлечь лирику.
Вот моя функция, чтобы получить текст:
private String[] getLyrics() {
// TODO Auto-generated method stub
try {
InputStream in = getResources().openRawResource(R.raw.data);
DocumentBuilder builder = DocumentBuilderFactory.newInstance()
.newDocumentBuilder();
Document doc = builder.parse(in, null);
NodeList albumnode = doc.getElementsByTagName("album");
for (int k = 0; k < albumnode.getLength(); k++)
{
if (((Element) albumnode.item(k)).getAttribute("value").equals(albumname))
{
NodeList nd = albumnode.item(k).getChildNodes();
for (int j = 0; j < nd.getLength(); j++) {
Node subNode = nd.item(j);
if (subNode.getNodeName().equals("songs")) {
if (subNode.hasAttributes()) {
NamedNodeMap nnm = subNode.getAttributes();
for (int i = 0; i < nnm.getLength(); i++) {
Node attrNode = nnm.item(i);
if (attrNode.getNodeType() == Node.ATTRIBUTE_NODE) {
Attr attribute = (Attr) attrNode;
String value = attribute.getValue();
if (value.equals(songname)) {
NodeList lyricslist = subNode
.getChildNodes();
for(int m=0 ; m<lyricslist.getLength();m++)
{
Node lyricsnode = lyricslist.item(m);
if (lyricsnode.getNodeType() == Node.TEXT_NODE) {
//Attr attribute = (Attr) attrNode;
String value1 = lyricsnode.getNodeValue();
Lyrics[0]=value1;
Toast.makeText(getApplicationContext(), ""+value1, Toast.LENGTH_LONG).show();
}
}
}
}
}
}
}
}
}
}
in.close();
}
catch (Exception t) {
Toast.makeText(this, "Exception: " + t.getMessage(),
Toast.LENGTH_LONG).show();
}
return Lyrics;
}
Так что ошибка в моем коде. Весь день я провела его. Но, к сожалению, я не могу определить свою ошибку. Pleaze решает мою проблему. Thanx.
Вместо DOM парсер, почему вы сделали не использовать анализатор SAX, который легче разрабатывать и отлаживать. – Jitendra
ohk thanx .. можете ли вы отправить код для доступа к дочернему узлу с помощью анализатора SAX ?? – zanky