gpt4 book ai didi

android - xmlns : android parsing

转载 作者:行者123 更新时间:2023-11-30 01:56:03 24 4
gpt4 key购买 nike

我正在尝试解析以下 XML 数据。我只需要 d:MessageId 和 d:SerialNumber。

<feed xmlns="http://www.w3.org/2005/Atom" ...>
<script id="tinyhippos-injected"/>
<id>...</id>
<title type="text">ViewError</title>
<updated>2015-08-25T01:41:55Z</updated>
<author>...</author>
<link href="EDI_ViewError" rel="self" title="EDI_ViewError"/>
<entry>...</entry>
<entry>...</entry>
<entry>
<id>
serveraddress
</id>
<title type="text">ViewError('ABCDEFG')</title>
<updated>2015-08-25T01:41:55Z</updated>
<category term="ViewError" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
<link href="ViewError('GSTU7417706')" rel="edit" title="ViewError"/>
<content type="application/xml">
<m:properties xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
<d:MessageId>msgId_1</d:MessageId>
<d:SerialNumber>sernr_1</d:SerialNumber>
</m:properties>
</content>
</entry>
</feed>

我怎样才能做到这一点?我的安卓代码如下。

HTTP 部分:

HttpClient httpclient = new DefaultHttpClient();
String user = "username";
String pwd = "pass";
HttpGet httpGet = new HttpGet("properhttplink");
httpGet.addHeader("Auth Header");
HttpResponse response = httpclient.execute(httpGet);
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent();

解析器部分:

XmlPullParserFactory xmlFactoryObject = XmlPullParserFactory.newInstance();
XmlPullParser myParser = xmlFactoryObject.newPullParser();
myParser.setInput(is, null);
String dee;
int event = myParser.getEventType();
while (event != XmlPullParser.END_DOCUMENT)
{
String name=myParser.getName();
switch (event){
case XmlPullParser.START_TAG:
break;
case XmlPullParser.TEXT:
break;
case XmlPullParser.END_TAG:
if(name.equals("d")){
dee = myParser.getAttributeValue(null,"value");
}
break;
}
event = myParser.next();
}

请注意 myParser.getEventType() 总是返回 "0"myParser.getName() 总是返回 "null ".

最佳答案

首先标签的名称是MessageId,不是dd 是标签的命名空间;命名空间用于区分名称相同但含义不同的标签。如果您的文档中没有 MessageId 的其他用途(即您永远不会在其他地方看到它与任何其他 namespace 一起使用),那么您可以有效地忽略它。

if ("MessageId".equals(parser.getName())) {

或者,如果命名空间真的很重要

if ("d".equals(parser.getNamespace()) && "MessageId".equals(parser.getName())) {

其次:您的代码使用了getAttributeValue(),但您尝试读取的内容是标签的文本内容,而不是标签的属性。您应该使用 getText()(如果当前事件是 TEXT)或 nextText()(如果当前事件是 START_TAG )。这导致我们...

第三:您无法阅读 END_TAG 事件中的文本。

我将从这里开始编写您的解析器代码:

XmlPullParserFactory xmlFactoryObject = XmlPullParserFactory.newInstance();
XmlPullParser parser = xmlFactoryObject.newPullParser();
parser.setInput(is, null);
String dee;
int event;
while ((event = parser.next()) != XmlPullParser.END_DOCUMENT) {
switch (event) {
case XmlPullParser.START_TAG:
if ("MessageId".equals(parser.getName()) {
dee = parser.nextText();
}
break;

// TODO: other event types, if you care about them

} // end switch
} // end while

关于android - xmlns : android parsing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32195053/

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