我正在尝试从预设的 xml 文件中提取值,当我尝试检查值是什么时,我总是得到 null。
if (pulled.equals("preset")) {
presetName = xmlParser.getAttributeValue(null,"name");
Log.d(TAG, presetName + " = " + xmlParser.getText());
}
这是 xml im 从中提取值
<?xml version="1.0" encoding="utf-8"?>
<sports>
<sport name="Baseball" paid="false">
<preset name="Pitching Mound">726.0</preset>
<preset name="Base Distance">1080.0</preset>
</sport>
<sport name="Basketball" paid="false">
<preset name="NBA Free Throw Line">181.08</preset>
<preset name="NBA 3pt Line">265.8</preset>
</sport>
<sport name="Cricket" paid="true">
<preset name="Cricket Pitch">2012.0</preset>
<preset name="Testing">0.8</preset>
</sport>
</sports>
我做错了什么吗?
在 XmlPullParser API 上,getText() 方法具有以下描述:
以字符串形式返回当前事件的文本内容。价值 返回取决于当前事件类型,例如 TEXT 事件它是元素内容(这是 next() 时的典型情况) 被使用)。有关 nextToken() 的详细说明,请参阅 nextToken
() 的说明 不同类型事件的可能返回值。注意:如果ENTITY_REF,此方法返回实体 替换文本(如果不可用,则为 null)。这是唯一的情况 其中 getText() 和 getTextCharacters() 返回不同的值。
因此,根据此描述,首先您必须检查当前 xml 节点是否为 TEXT,以便 getText() 不返回 null。
if (pulled.equals("preset")) {
presetName = xmlParser.getAttributeValue(null,"name");
if (xmlParser.getEventType() == XmlPullParser.TEXT) {
Log.d(TAG, presetName + " = " + xmlParser.getText());
}
}
希望这有帮助,