【问题标题】:Xmlparser.getText() is giving nullXmlparser.getText() 给出 null
【发布时间】:2014-04-02 06:39:12
【问题描述】:

我正在尝试从预设的 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>

我做错了吗?

【问题讨论】:

标签: java android xml android-xmlpullparser


【解决方案1】:

在XmlPullParser api上,getText()方法有如下描述:

以字符串形式返回当前事件的文本内容。价值 返回取决于当前事件类型,例如 TEXT 事件它是元素内容(这是 next() 时的典型情况 用来)。
的详细描述见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());
    }
}

希望这会有所帮助,

【讨论】:

    猜你喜欢
    • 2016-01-29
    • 2019-12-13
    • 1970-01-01
    • 1970-01-01
    • 2013-02-04
    • 2021-08-21
    • 2018-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多