XmlPullParser如何获取res/raw/xml/xmlfilename?

2023-11-29

我是编程新手,所以如果我在下面的段落中错了,请首先纠正我:

Android 中主要使用三种 xml 解析器:Sax、Dom 和 XmlPullParser。最后一个选项,同时作为外部资源存在。是 Android 的“核心”,因此工作速度更快,但功能有限

好的,这是我的问题我稍微修改了下面链接中提供的代码

http://developer.android.com/reference/org/xmlpull/v1/XmlPullParser.html

我做了以下事情:

import java.io.IOException;
import java.io.StringReader; 
import org.xmlpull.v1.XmlPullParser; 
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory; 

public class xmlPParser
{   

    public String texte;
    public xmlPParser (String arg)         
      throws XmlPullParserException, IOException     
    {
         XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
         factory.setNamespaceAware(true);
         XmlPullParser xpp = factory.newPullParser();
         xpp.setInput( new StringReader ( arg ) );
         int eventType = xpp.getEventType();



         while (eventType != XmlPullParser.END_DOCUMENT)
       {
            //if(eventType == XmlPullParser.START_DOCUMENT) { System.out.println("Start document");} 
       // else if(eventType == XmlPullParser.START_TAG) { System.out.println("Start tag "+xpp.getName()); } 
        //else if(eventType == XmlPullParser.END_TAG) {  System.out.println("End tag "+xpp.getName()); }
        if(eventType == XmlPullParser.TEXT){ texte = xpp.getText();  }    //{ System.out.println("Text "+xpp.getText());}          

        eventType = xpp.next();
            }         

         //System.out.println("End document");
         } 

        public String getTexte()
        {
            String returnTexte = texte;
            return returnTexte;
        }

} 

在另一个java文件中,我可以通过以下方式调用解析器:

public xmlPParser myxpp;

...

myxpp = new xmlPParser("<foo>Hi five !!</foo>");

在最后一行:我希望能够要求解析器转到文件,而不是向其传递字符串。我该怎么做? 我不知道如何利用这个帖子getResources().getXml() 是否假设我正在使用我现在不确定是否使用的 Android pullParser ?


XmlPullParser 并不是真正的解析器,它是一种解析器类型的接口,称为“拉”解析器。

函数 getResources().getXml() 返回用于“解析”XML 资源的 XmlPullParser 的实现。这不是一个真正的 XML 解析器 —— 事实上,原始 XML 文件在构建到您的应用程序之前已在构建时进行了解析,而这个“XML 解析器”所做的只是在您调用其 API 时返回预先消化的 XML 结构。这是 Android 上可用的最快的“XML”解析器(因为它并不真正解析任何内容),但要求将 XML 文档作为构建应用程序的一部分进行编译。

从 XmlPullParserFactory.newInstance() 获得的 XmlPullParser 的另一个实现不是“受限的”——该实现功能齐全,并且可以解析您提供给它的任何原始 XML 文档。

至少有一次(不确定是否仍然如此),SAX 解析器和 XmlPullParserFactory.newInstance() 返回的解析器实际上构建在相同的底层实现上,即 expat。 expat 解析器是一个“推送”解析器(与 SAX 具有相同的模型),因此最有效的使用方法是使用 SAX API。 XmlPullParser 版本比 SAX 有更多开销,因为它需要将底层推送语义转换为拉取接口。

如果有帮助的话,push 意味着它将解析的数据推送给您(您实现的回调为您提供每个标签和其他文档元素),而 pull 意味着您调用解析器来检索每个元素。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

XmlPullParser如何获取res/raw/xml/xmlfilename? 的相关文章

  • 您的应用中的 Google Analytics SDK

    我按照这里的说明进行操作 https developers google com analytics devguides collection android v3 https developers google com analytics
  • 如何在Android上获取当前播放曲目的路径[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想编写一个应用程序将当前播放的音乐流式传输到另一台设备 两个设备之间的连接确实有效 我还可以通过 wifi 传输一些字符串 但在获取
  • Android Studio Canary 3.4 Canary 4:错误:功能插件不支持variant.getApplicationId()

    自从我在新版本上更新了我的项目以来Android Studio 3 4 金丝雀 4 gradle 同步失败 因为 ERROR variant getApplicationId is not supported by feature plug
  • 在 Android 中使用 awt

    我有一个绘制图表的 Java Swing 应用程序 它使用 Graphics2D 调用和 awt 对象 例如 Rectangle 等 在某些时候我可能想将其移植到 Android 上 我知道我无法在 Android 上使用 Graphics
  • 如何以编程方式判断蓝牙设备是否已连接?

    我了解如何获取已配对设备的列表 但如何判断它们是否已连接 这一定是可能的 因为我看到它们列在我手机的蓝牙设备列表中 并且它说明了它们的连接状态 将蓝牙权限添加到您的AndroidManifest中
  • 升级到 Proguard 4.8 后无法导出应用程序

    我刚刚将我的 Android SDK ADT 和 Proguard 升级到最新最好的版本 我的项目在调试模式下编译并运行良好 但是当我尝试导出它的签名版本 APK 时 我收到来自导出向导的错误Eclipse 控制台上没有任何错误日志消息 如
  • 与通用地图相比,MapView 的分辨率较差

    我刚刚收到 HTC Desire 进行测试 我注意到 残留在小于整个屏幕的框架中的地图视图不如通用地图应用程序那么清晰 有什么办法解决这个问题吗 您应该使用 API 级别 4 或更高级别编译应用程序 然后在 AndroidManifest
  • 如何连接到Google Play服务并加载排行榜

    我想将我的游戏与 Google Play 服务连接 我已阅读有关 Android 开发人员的文档 并尝试遵循输入数字示例 但仍然无法加载排行榜 我有导入baseGameUtils 但我使用andengine 所以我没有使用来自谷歌的exte
  • Android 在 Windowmanager 中调整视图大小

    这是我的代码 menubuttonClosed li inflate R layout menu button null menubutton ImageButton menubuttonClosed findViewById R id m
  • 构建应用程序时出现 BufferOverflowException

    每次我想运行我的 Android 应用程序时 我都会收到错误 2013 11 02 13 05 36 Dex Loader Unable to execute dex java nio BufferOverflowException Che
  • 在 Android 中使用 AES 加密的最佳实践是什么?

    我为什么问这个问题 我知道人们对 AES 加密存在很多疑问 即使对于 Android 也是如此 如果您在网络上搜索 会发现很多代码片段 但在每个页面上 在每个 Stack Overflow 问题中 我都发现了另一个具有重大差异的实现 所以我
  • Android - 使用 SAX 解析器解析大文件

    我正在尝试使用 SAX 解析器解析来自 webservice 的 xml 数据 当我尝试使用 URL 解析数据 大小 7 4MB 时 它工作正常 但是当我从 URL 复制 xml 数据并放置 xml 文件时 size 7 4MB 在raw文
  • MutableStateflow 值、更新、发出

    假设我有一个可变状态流 https kotlin github io kotlinx coroutines kotlinx coroutines core kotlinx coroutines flow mutable state flow
  • 如何防止应用程序被盗(针对Android应用程序)?

    我想知道防止人们窃取我的应用程序的最有效方法是什么 在线下载 apk 的副本而不是购买它 我已经花了一个lot特别是 Droidbox 上的时间 并且不会发布 Sync 直到我可以保证提供专业版本的非法副本的人无法发布 有人实施过这个吗 我
  • Fresco:滚动 RecyclerView 后图像消失

    我有一个 Horizo ntal RecyclerView 每个项目都有一个使用 Facebook Fresco 图像库加载到其中的图像 然而 虽然正确的图像最初是在屏幕上滚动一点时加载的 但当 RecyclerView 进一步滚动时 它就
  • DialogFragment 关闭事件

    我需要处理 DialogFragment 的结尾 在调用 dismiss 之后 例如 我会在关闭后 包含 片段的活动内显示一个 toast 我该如何处理该事件 覆盖onDismiss 在你的DialogFragment中 或者使用setOn
  • onStart() 到底做了什么? - 安卓[重复]

    这个问题在这里已经有答案了 一段时间以来 我一直想知道 onStart 函数在 android 生命周期中的确切作用 网上的大多数资源只是说 它在您的活动在屏幕上可见之前被调用 但到目前为止我所做的应用程序我从未使用过onStart 我在
  • Android:选择 EditField 上焦点上的所有文本

    我试图让 Android 在获得焦点时选择 EditText 字段中的所有文本 我在布局中使用此属性 在两个字段上 android selectAllOnFocus true 我不确定这是否相关 但为了将光标移动到第一个可编辑字段 前面 还
  • 在 VideoView 开始播放之前,TextView 不会显示

    我编写了一个android应用程序 它有两个视图 TextView上方的VideoView 位于ScrollView内部 我遇到了一个问题 直到VideoView开始播放视频 TextView才显示 并且我有一个黑屏 这可能需要很长一段时间
  • 使用 PDFBox 在 Android 中创建 PDF

    我正在尝试通过我的 Android 应用程序创建 PDFPDFBoxapi 但出现以下错误 java lang NoClassDefFoundError org apache pdfbox pdmodel PDDocument 我已经将以下

随机推荐

  • 5 月 1 日后弃用后,offline_access 将如何工作?

    我做了一些测试 发现结果与 Facebook 的文档相矛盾 https developers facebook com roadmap offline access removal 如果我们启用 弃用离线访问 并在移动客户端请求离线访问 我
  • Android Gradle 插件需要 Java 11 才能运行。您当前使用的是 Java 1.8。 **EXPO.dev**

    我正在尝试使用该命令eas build p android构建我的安卓 aab文件 但每次我尝试这样做时 我都会发现错误 Android build failed Gradle build failed with unknown error
  • 如何在 Python 中将参数方程拟合到数据点

    我正在寻找一种适合的方式参数方程使用 Python 生成一组数据点 作为一个简单的例子 给出了以下数据点集 import numpy as np x data np array 1 2 3 4 5 y data np array 2 0 3
  • 是否可以在 Cassandra 中以 CQL blob 类型存储 PDF 文件?

    以避免有关问题 为什么使用 cassandra 而选择其他数据库 我们必须这样做 因为我们的客户决定我的选择是一个完全错误的决定 在我们的应用程序中 我们必须处理 PDF 文档 即阅读它们并用数据填充它们 所以我的目的是将文档 模板 保存在
  • 在 C# 中使用数字设置颜色

    我可以使用画笔设置对象的颜色 如下所示 Brushes Red 如何使用数字应用相同的方法 say SetColor ffffff 上面是一个想象的例子 您可以使用ColorTranslator FromHtml 编辑 为了回应您的评论 您
  • Asyncio 与另一个协程同时运行 Dash (Flask) 服务器

    我创建了一个 dash 应用程序来显示另一个代码正在收集的信息 我想使用 Python 中的 asyncio 模块同时运行它们 我的代码使用异步函数 而 Dash 应用程序 基于 Flask 在服务时阻止其他任何内容执行 我不确定这是否需要
  • 如何使用 gl.lineWidth()

    其他一切都进展顺利 界限正在绘制中 它似乎只是忽略了 gl lineWidth 调用 我还有什么需要做的吗 gl lineWidth 17 gl drawArrays this drawMode 0 totalVertices 我是否有可能
  • Javascript RegExp 在具有嵌套子字符串的字符串上应用跨度标签

    示例字符串 There is a red car parked in front of a blue house with a fence painted red 要使用跨度突出显示的字符串是 red car blue house red
  • 每当在Linux中使用inode创建新文件时,如何获取文件名以及文件的绝对路径?

    我用我的linux操作系统 CentOS 做了一些实验 我想跟踪在同一环境下创建的所有工具日志 工具生成相应的日志 log extn 来跟踪这些更改我编写了一个perl观察程序 它实际上监视目录我设置的 当创建新文件时 它将显示在输出中 但
  • 这两种函数语法类型有什么区别[重复]

    这个问题在这里已经有答案了 正如标题所说 两者有什么区别 MyFunction function and function MyFunction Nothing 复制 var functionName function vs functio
  • 如何根据其他字段值更改 OpenERP 选择字段中的选择?

    我有一个包含四个字段的表单 作物 选择 活动起始日期 至今活跃 区块区域 选择 如何使块区域中的可用选项取决于用户为其他字段选择的值 我不知道是否可以使用选择字段来完成此操作 但是当另一个字段更改值时 您可以更改多对一字段的域 您也许还可以
  • 这是有效的 YAML 吗?

    所以对于我在 C 中的文本解析question 我被定向到 YAML 我在推荐这个库时遇到了困难 所以这是一个快速的方法 heading name A name taco Yes age 32 heading name Another na
  • 意外的命名空间“map” - Android Google Maps API

    这是我的 XML 文件的全部内容 重要的部分是最后的地图片段 它给了我这个错误 标签片段发现意外的命名空间前缀 它似乎不会影响代码 但我很好奇是否有人知道发生了什么 我看过帖子说这是 Lint 问题或 Eclipse 问题 但我使用的是最新
  • (*(int (*)())a)() 是什么意思?

    我是学习C 的初学者 今天看到一个这样的指针函数 int a 我很困惑这是什么意思以及如何轻松理解它 让我们添加一个 typedef 以帮助弄清楚它的正面或反面 typedef int int func ptr int func ptr a
  • JTextPane 和 JTextField 之间的文本选择冲突

    如果存在 JTextField 为什么无法以编程方式选择 JTextPane 中的文本 我认为与专注有关 谢谢 import java awt FlowLayout import java awt GridLayout import jav
  • 从时间选择器中选择时间获取不同时区的时间

    我遇到将选定的小时和分钟转换为国家 地区不同时区的问题 假设如果我选择印度上午 10 点 那么我想知道印度上午 10 点美国 纽约和东京的时间 反之亦然 任何帮助都是值得赞赏的 谢谢 请找到以下解决方案 SimpleDateFormat s
  • 如何将复杂矩阵保存在文件中?

    我必须使用 numpy 的 savetxt 命令将下面显示的包含复杂数据的矩阵保存到扩展名为 H 的文件中 但我无法保存它 要保存的矩阵是 1 0 0 j 0 0 0 j 0 0 0 j 1 0 0 j 1 0 0 j 0 0 0 j 2
  • 如何在球衣资源方法中重写@JsonView

    我有一些使用 JsonView 注释设置的球衣资源方法 以便过滤响应中返回的字段 我希望在某些情况下能够用另一个注释中设置的 JsonView 覆盖 或者有时完全禁用它 某些 queryParam 将用于定义应设置哪个视图进行渲染或是否应禁
  • Swift:在类中实现协议初始化器

    我试图理解为什么 Swift 强制执行一个符合协议的类 并根据需要将初始化程序标记为 这本质上强制所有子类也实现该初始值设定项 指定的超类初始值设定项肯定会被继承吗 下面的引述摘自 Swift 语言指南 https developer ap
  • XmlPullParser如何获取res/raw/xml/xmlfilename?

    我是编程新手 所以如果我在下面的段落中错了 请首先纠正我 Android 中主要使用三种 xml 解析器 Sax Dom 和 XmlPullParser 最后一个选项 同时作为外部资源存在 是 Android 的 核心 因此工作速度更快 但