Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何解析网站?_Java_Android_Parsing_Xml Parsing_Saxparser - Fatal编程技术网

Java 如何解析网站?

Java 如何解析网站?,java,android,parsing,xml-parsing,saxparser,Java,Android,Parsing,Xml Parsing,Saxparser,我是Android开发新手。我一直在学习一本书:头先安卓开发-乔纳森·西蒙。我遇到了一个SAXParser实现,尽管代码似乎过时了,在线教程也过时了,或者没有显示如何从网站解析 SAXParser.java package com.example.saxparser; import java.io.InputStream; import java.net.URL; import javax.xml.parsers.SAXParserFactory;

我是Android开发新手。我一直在学习一本书:头先安卓开发-乔纳森·西蒙。我遇到了一个SAXParser实现,尽管代码似乎过时了,在线教程也过时了,或者没有显示如何从网站解析

SAXParser.java

    package com.example.saxparser;

    import java.io.InputStream;
    import java.net.URL;

    import javax.xml.parsers.SAXParserFactory;

    import org.xml.sax.Attributes;
    import org.xml.sax.InputSource;
    import org.xml.sax.SAXException;
    import org.xml.sax.XMLReader;
    import org.xml.sax.helpers.DefaultHandler;

    public class SAXParser extends DefaultHandler {
private String url = "http://www.w3schools.com/xml/note.xml";
private boolean inTitle = false;
private boolean inDescription = false;
private boolean inItem = false;
private String title = null;
private StringBuffer description = new StringBuffer();

public void processFeed() {
    try {
        SAXParserFactory factory =
                SAXParserFactory.newInstance();
        javax.xml.parsers.SAXParser parser = factory.newSAXParser();
        XMLReader reader = parser.getXMLReader();
        reader.setContentHandler(this);
        InputStream inputStream = new URL(url).openStream();
        reader.parse(new InputSource(inputStream));
    } catch (Exception e) {}
}

public void startElements(String url, String localName, String qName, Attributes attributes) throws SAXException {
    if (localName.startsWith("to")) { inItem = true; }
    else if (inItem) {
        if (localName.equals("from")) { inTitle = true; }
        else { inTitle = false; }

        if (localName.equals("heading")) { inDescription = true; }
        else { inDescription = false; }
    }
}

public void characters(char ch[], int start, int length) {
    String chars = new String(ch).substring(start, start + length);
    if (inTitle && title == null) { title = chars; }
    if (inDescription) { description.append(chars); }
}

public String getTitle() { return title; }
public StringBuffer getDescription() { return description; }
 }
MainActivity.java

 package com.example.saxparser;

 import android.os.Bundle;
 import android.app.Activity;
 import android.view.Menu;
 import android.widget.TextView;

 public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    SAXParser handler = new SAXParser();
    handler.processFeed();

    resetDisplay(handler.getTitle(), handler.getDescription());
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

public void resetDisplay(String title, StringBuffer stringBuffer) {
    TextView titleView = (TextView) findViewById(R.id.imageTitle);
    titleView.setText(title);
    TextView descriptionView = (TextView) findViewById(R.id.imageDescription);
    descriptionView.setText(stringBuffer);
}

}

我也是Android开发领域的新手,到目前为止,我知道SAX可以用于XML文件解析器,但我不确定是否可以解析整个HTML。请记住,尽管HTML是SGML的一个子集(因此可以用SAX中相同的方法对其进行解析),但它可能很棘手(事实上,XML可以被视为HTML的近亲,SGML的侄子)。您可能会发现自己在动态加载方面遇到麻烦(如DaveNewton所说)。也许如果你多解释一点你的目标,我们都可以给你一个更详细的解释/建议(或者更深入地了解怜悯的提议),例如。。。承载您想要解析的内容的网站是否提供XML API?我想不会,因为您考虑了解析HTML而不是解析XMLAPI响应。请提供更多信息。

与其他XML文档一样。也就是说,使用jsoup或类似的限制性较小的解析器,会更容易。当网站动态构建其DOM时,它会变得更加棘手,这种情况经常发生。哦,我的天,这太疯狂/过分了,试试看