html cleaner et Xpath

  • Réponses :0
anass
  • Posts de Forum 1

19 juin 2012 à 19:48:12 via site

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 ainsi parser directement ce que retourne le html cleaner, ( pas la peine d'aller importer le fichier qui a été crée et après le parser), j'aimerai parser directement??

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");
}}


programme android Xpath pour le parsing du fichier xml:


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());
}}} }

Répondre