gpt4 book ai didi

java - SAX XML解析添加参数

转载 作者:行者123 更新时间:2023-11-30 09:31:14 25 4
gpt4 key购买 nike

我是使用 SAX 进行此解析的新手。我设法使用此代码获取返回的 xml 并将其绑定(bind)到我的 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);

最佳答案

SAX 是一个推送解析器。这意味着它会遍历 XML 文档,基于它生成事件并将它们推送给您进行处理。它不会创建像 DOM 那样的对象树。但它可以帮助您创建自定义对象或您选择的对象层次结构,同时占用更少的内存。

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

为了获得特定的 XML 内容,您需要实现或使用特定处理程序的实现。您的示例使用名为 XMLHandler 的实现。我不知道您是否自己实现了它,或者它只是一些默认实现。从它的外观来看,它只是将 XML 文档的全部内容复制到一个 String 成员中,这并不是您想用 SAX 做的事情(DOM 会为您做的更好)。

您现在需要做的是通过实现一个处理程序来创建一个包含您需要的数据的对象。这是一个示例(不只是打印内容,您应该按照您认为合适的方式构建对象):

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

参见 here了解更多详情。

关于java - SAX XML解析添加参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12970401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com