Aller au contenu

html cleaner et Xpath


Recommended Posts

Bonjour,

j'ai un programme java qui utilise le html cleaner pour structurer le code html d'une page web et l'enregistrer sous format xml.

et j'ai un autre programme android situé dans un projet android, qui fait le Parsing de ce fichier xml que j'ai enregistré avec le premier programme.

Ma question, est comment regrouper les deux code, c'est a dire,mettre le programme java (html cleaner) dans le programe android et pouvoir directement parser le contenu sans aller récuperer le fichier xml..??

programme java html cleaner:

import java.io.IOException;

import java.net.MalformedURLException;

import java.net.URL;

import org.htmlcleaner.CleanerProperties;

import org.htmlcleaner.CleanerTransformations;

import org.htmlcleaner.HtmlCleaner;

import org.htmlcleaner.PrettyXmlSerializer;

import org.htmlcleaner.TagNode;

import org.htmlcleaner.TagTransformation;

public class zbel {

public static void main(String [] arg) throws IOException

{

CleanerProperties props = new CleanerProperties();

// set some properties to non-default values

props.setTranslateSpecialEntities(true);

props.setTransResCharsToNCR(true);

props.setOmitComments(true);

props.setPruneTags("script,meta,a,select,class,head");

CleanerTransformations transformations = new CleanerTransformations();

TagTransformation tt = new TagTransformation("span");

transformations.addTransformation(tt);

HtmlCleaner cleaner = new HtmlCleaner(props);

cleaner.setTransformations(transformations);

// do parsing

TagNode tagNode = cleaner.clean(new URL("http://oncf.ma/Fr/horraires.aspx?ep=2&elt=26&CodeRD=0093&CodeGD=00213&CodeRA=0093&CodeGA=00303&heure=0000&date=10/06/2012"));

// serialize to xml file

new PrettyXmlSerializer(props).writeToFile(tagNode, "C:/Users/Anass/Desktop/Master/My Shared Folder/xpath_andro/res/raw/fichier_xml", "utf-8");

}}

code android Xpath pour le parsing du fichier xml qui a été généré par le code Java

package com.path.path;

import java.util.ArrayList;

import javax.xml.xpath.XPath;

import javax.xml.xpath.XPathConstants;

import javax.xml.xpath.XPathFactory;

import org.w3c.dom.Node;

import org.w3c.dom.NodeList;

import org.xml.sax.InputSource;

import android.app.ListActivity;

import android.os.Bundle;

import android.widget.ArrayAdapter;

import android.widget.Toast;

import java.io.IOException;

import java.net.MalformedURLException;

import java.net.URL;

import org.htmlcleaner.CleanerProperties;

import org.htmlcleaner.CleanerTransformations;

import org.htmlcleaner.HtmlCleaner;

import org.htmlcleaner.PrettyXmlSerializer;

import org.htmlcleaner.TagNode;

import org.htmlcleaner.TagTransformation;

public class Xpath_androActivity extends ListActivity {

// data

ArrayList<String> mPeople = new ArrayList<String>();

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

try {

parseData();

} catch(Exception ex) {

Toast.makeText(this, "Exception: " + ex.getMessage(), Toast.LENGTH_LONG).show();

}

// pass adapter w/ data queried through XPath to ListView

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mPeople);

setListAdapter(adapter);

}

private void parseData() throws Exception {

// create an InputSource object from /res/raw

InputSource inputSrc = new InputSource(getResources().openRawResource(R.raw.pchaakh));

// query XPath instance, this is the parser

XPath xpath = XPathFactory.newInstance().newXPath();

// specify the xpath expression

String expression = "//div[@id=tblResultatHoraire1]//td";

// list of nodes queried

NodeList nodes = (NodeList)xpath.evaluate(expression, inputSrc, XPathConstants.NODESET);

Toast.makeText(this, "count: " + String.valueOf(nodes.getLength()),Toast.LENGTH_SHORT).show();

// if node found

if(nodes != null && nodes.getLength() > 0) {

mPeople.clear();

int len = nodes.getLength();

for(int i = 0; i < len; ++i) {

// query value

Node node = nodes.item(i);

mPeople.add(node.getTextContent());

}}} }

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...