anass
- Posts de Forum 1
19 juin 2012 à 19:48:12 via site
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());
}}} }
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());
}}} }
Contenu éditorial recommandé
Avec ton accord, un contenu externe est chargé ici.
En cliquant sur le bouton ci-dessus, tu acceptes que des contenus externes soient affichés. Des données personnelles peuvent alors être transmises à des fournisseurs tiers. Tu trouveras plus d'informations à ce sujet dans notre Déclaration de protection de données.