Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.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 SAXXML解析添加参数_Java_Android_Parsing - Fatal编程技术网

Java SAXXML解析添加参数

Java SAXXML解析添加参数,java,android,parsing,Java,Android,Parsing,我不熟悉使用SAX进行解析。我设法使用这段代码获取返回的xml并将其绑定到我的getter setter上 我的代码: try { /** * Create a new instance of the SAX parser **/ SAXParserFactory saxPF = SAXParserFactory.newInstance(); SAXParser saxP = saxPF.newSAXParse

我不熟悉使用SAX进行解析。我设法使用这段代码获取返回的xml并将其绑定到我的getter setter上

我的代码:

try {

        /**
         * Create a new instance of the SAX parser
         **/
        SAXParserFactory saxPF = SAXParserFactory.newInstance();
        SAXParser saxP = saxPF.newSAXParser();
        XMLReader xmlR = saxP.getXMLReader();


        URL url = new URL(""); // URL of the XML

        /** 
         * Create the Handler to handle each of the XML tags. 
         **/
        XMLHandler myXMLHandler = new XMLHandler();
        xmlR.setContentHandler(myXMLHandler);
        xmlR.parse(new InputSource(url.openStream()));

    } catch (Exception e) {
        System.out.println(e);
    }

    data = XMLHandler.data;
现在我的问题是,如何在php url上传递参数。因为在我的PHP文件中,我需要一些数据,以便验证它是否有效

假设我需要登录电话的人的用户名

在DOM方法中,我可以这样做

XMLParser parser2 = new XMLParser(); 
    parser2.getXmlFromUrl(URL_FBFRIEND); 

      //HTTP POST
      String url_Getmembermob= URL_FBFRIEND ;
      //String xml_getMembermob=null;
      try {
      HttpClient httpclient = new DefaultHttpClient();
      HttpPost httppost = new HttpPost(url_Getmembermob);

      List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(4); 
      nameValuePairs.add(new BasicNameValuePair("blah", "blah"));
      nameValuePairs.add(new BasicNameValuePair("blah", "blah"));
      nameValuePairs.add(new BasicNameValuePair("blah", "blah"));
      nameValuePairs.add(new BasicNameValuePair("blah", "blah"));

      //Log.i("nameValuePairs", "nameValuePairs=" + nameValuePairs);

        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        HttpResponse httpResponse = httpclient.execute(httppost);

        HttpEntity httpEntity = httpResponse.getEntity();

        FBFRIENDS = EntityUtils.toString(httpEntity);
XMLParser parser2=新的XMLParser();
parser2.getXmlFromUrl(URL\fBfFriend);
//HTTP POST
字符串url\u Getmembermob=url\u fBfFriend;
//字符串xml_getMembermob=null;
试一试{
HttpClient HttpClient=新的DefaultHttpClient();
HttpPost-HttpPost=新的HttpPost(url\u Getmembermob);
List nameValuePairs=新的ArrayList(4);
添加(新的BasicNameValuePair(“废话”、“废话”);
添加(新的BasicNameValuePair(“废话”、“废话”);
添加(新的BasicNameValuePair(“废话”、“废话”);
添加(新的BasicNameValuePair(“废话”、“废话”);
//Log.i(“nameValuePairs”、“nameValuePairs=“+nameValuePairs”);
setEntity(新的UrlEncodedFormEntity(nameValuePairs));
HttpResponse HttpResponse=httpclient.execute(httppost);
HttpEntity HttpEntity=httpResponse.getEntity();
FBFRIENDS=EntityUtils.toString(httpEntity);

不要使用URL对象,而是继续使用HttpClient。使用HttpResponse.getInputStream()方法


SAX是一个推式解析器。这意味着它遍历XML文档,基于XML文档生成事件并向前推送它们供您处理。它不会创建像DOM这样的对象树。但它可以帮助您创建自定义对象或您选择的对象层次结构,而占用的内存要少得多

生成的SAX事件可能类似于“呃!哦!我刚刚找到了一个元素开始标记”、“好吧!我找到了一个属性”或“字符!天哪,我找到了一个文本值”。通常会为正在解析的XML文档中找到的每个XML构造生成一个事件,但并非所有构造都需要处理。处理的内容由处理程序的实现指定(在您的示例中,它是使用
setContentHandler(myXMLHandler)
设置的)

为了获得特定的XML内容,您需要实现或使用特定处理程序的实现。您的示例使用了一个名为
XMLHandler
的实现。我不知道是您自己实现的,还是只是一些默认实现。从外观上看,它只是将XML文档的整个内容复制到字符串m中余烬,这并不是您想要用SAX做的事情(DOM会为您做得更好)

您现在需要做的是通过实现处理程序来使用所需的数据创建一个对象


有关更多详细信息,请参阅。

您好,先生,谢谢您的回答。先生,我的问题是我是否可以在SAX解析器上添加DOM的nameValuePairs,因为我需要创建另一个SAXparse,其中php具有后参数。先生,谢谢您的回答。先生,我的问题是我是否可以在SAX解析器上添加DOM的nameValuePairs,因为我需要创建另一个SAXparse w这里我的php有一个后参数
XMLHandler myXMLHandler = new XMLHandler();
xmlR.setContentHandler(myXMLHandler);
xmlR.parse(httpResponse.getInputStream());
public class DummyHandler extends DefaultHandler{
    @Override
    public void characters(char[] ch, int start, int length)
            throws SAXException {
        super.characters(ch, start, length);
        System.out.println("characters! dear god, I've located a text value");
    }

    @Override
    public void endElement(String uri, String localName, String name)
            throws SAXException {
        super.endElement(uri, localName, name);
        System.out.println("an element was ended. may it R.I.P. o7");
    }

    @Override
    public void startElement(String uri, String localName, String name,
            Attributes attributes) throws SAXException {
        super.startElement(uri, localName, name, attributes);
        System.out.println("uh! oh! I've just hit an element openening tag");
    }
}