data.xml
<?xml version="1.0"?> <records> <employee> <name>Sachin Kumar</name> <salary>50000</salary> </employee> <employee> <name>Rahul Kumar</name> <salary>60000</salary> </employee> <employee> <name>John Mike</name> <salary>70000</salary> </employee> <employee> <name>Jackson Mike</name> <salary>70000</salary> </employee> <employee> <name>Johnny</name> <salary>710000</salary> </employee> <employee> <name>Julian Mike</name> <salary>800000</salary> </employee> </records>
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_marginLeft="54dp" android:text="TextView" /> </RelativeLayout>
SAX Parser
Methods in SAX parser:
- startDocument()
- endDocument()
- startElement()
- endElement()
- characters()
package mdad.lab12; import java.io.InputStream; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class MainActivity extends Activity { TextView tv; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv=(TextView)findViewById(R.id.textView1); try { SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser saxParser = factory.newSAXParser(); DefaultHandler handler = new DefaultHandler() { boolean name = false; boolean salary = false; public void startElement(String uri, String localName,String qName, Attributes attributes) throws SAXException { if (qName.equalsIgnoreCase("_______")) { name = true; } if (qName.equalsIgnoreCase("_______")) { salary = true; } } public void endElement(String uri, String localName, String qName) throws SAXException { } public void characters(char ch[], int start, int length) throws SAXException { if (___________) { tv.setText(tv.getText()+"\n\n Name : " + new String(ch, start, length)); name = false; } if (___________) { tv.setText(tv.getText()+"\n Salary : " + new String(ch, start, length)); salary = false; } }//end of characters };//end of DefaultHandler InputStream is = getAssets().open("data.xml"); saxParser.parse(is, handler); } catch (Exception e) {e.printStackTrace();} } }
if (qName.equalsIgnoreCase("name")) {
if (qName.equalsIgnoreCase("salary")) {
if (name) {
if (salary) {
DOM Parser
package mdad.lab12; import java.io.InputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; //http://www.javatpoint.com/android-xml-parsing-using-dom-parser public class MainActivity extends Activity { TextView tv1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv1=(TextView)findViewById(R.id.textView1); try { InputStream is = getAssets().open("data.xml"); DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); Document doc = dBuilder.parse(is); Element element=doc.getDocumentElement(); element.normalize(); NodeList nList = doc.getElementsByTagName("employee"); for (int i=0; i<nList.getLength(); i++) { Node node = nList.item(i); if (node.getNodeType() == Node.ELEMENT_NODE) {
Element element2 = (Element) node; tv1.setText(tv1.getText()+"\n\nName : " + getValue("__________", _________)+"\n"); tv1.setText(tv1.getText()+"Salary : " + getValue("__________", _________)+"\n"); tv1.setText(tv1.getText()+"-----------------------"); } } } catch (Exception e) {e.printStackTrace();} } private static String getValue(String tag, Element element) { NodeList nodeList = element.getElementsByTagName(tag).item(0).getChildNodes(); Node node = (Node) nodeList.item(0); return node.getNodeValue(); } }
tv1.setText(tv1.getText()+"\n\nName : " + getValue("name", element2)+"\n");
tv1.setText(tv1.getText()+"Salary : " + getValue("salary", element2)+"\n");
Part 3: Make the TextView scrollable (Vertical)
At the XML Layout, activity_main.xml :
Add two lines to TextView tv1
<TextView
android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_marginLeft="54dp" android:maxLines="20" android:scrollbars="vertical" android:text="TextView" />
At the MainActivity.java
import android.text.method.LinkMovementMethod; import android.text.method.ScrollingMovementMethod;
Add the following to the onCreate method
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv1=(TextView)findViewById(R.id.textView1);
tv1.setMovementMethod(new ScrollingMovementMethod()); //For Scrollbar tv1.setMovementMethod(LinkMovementMethod.getInstance()); //For Hyperlink uses (optional)