android - XmlPullParser - 从具有特定父元素的元素中提取

标签 android android-xml xmlpullparser

考虑这个 XML。它描述了人员和他们拥有的汽车的列表。

<People>
    <Person id="100">
        <Name>Bob</Name>
        <Cars>
            <Car>
                <Make>Toyota</Make>
                <Model>Celica</Model>
            </Car>
        </Cars>
    </Person>
    <Person id="101">
        <Name>Jim</Name>
        <Cars>
            <Car>
                <Make>Ford</Make>
                <Model>Pinto</Model>
            </Car>
            <Car>
                <Make>Dodge</Make>
                <Model>Viper</Model>
            </Car>
        </Cars>
    </Person>
</People>

我已经创建了一个解析器,它将通过并抓取:

ID: 100, Name: Bob
ID: 101, Name: Jim

但我正在努力将其分解并获取作为特定父项的子项的嵌套元素。

while (eventType != XmlPullParser.END_DOCUMENT) {
    String name = null;
    switch (eventType) {
        case XmlPullParser.START_DOCUMENT:
            // do something
            break;                      
        case XmlPullParser.START_TAG:                               
            name = parser.getName();
            if (name.equalsIgnoreCase("Cars")) {                    

                // how do i restrict this to only cars under person with ID 101?

            } 

假设我只想知道吉姆有什么样的车。我知道 Jim 的 ID 是 101,但是当父 Person 元素有一个 id 时,我如何限制 XmlPullParser 循环只查看 Cars 元素> 101

最佳答案

您可以使用标志来了解解析器当前的位置,例如:

boolean personFound = false;
boolean carsFound = false;
while (eventType != XmlPullParser.END_DOCUMENT) {
    if (XmlPullParser.START_TAG && parser.getName().equals("Person") && parser.getAttributeValue(0).equals("101")) {
        personFound = true;
    }
    if (personFound && XmlPullParser.START_TAG && parser.getName().equals("Cars")){
        carsFound = true
    }
    if (carsFound) {
        // Do something useful
    }
    if (carsFound && XmlPullParser.END_TAG && parser.getName().equals("Cars"){
        break;
    }
    eventType = parser.next();
}

关于android - XmlPullParser - 从具有特定父元素的元素中提取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24784360/

相关文章:

android - 如何将 imagebutton 的大小设置为与其源图像的大小完全相同?

java - 如何将 Activity 的布局背景宽度设置为 100%

android - 如何从 Android Widget 创建快捷方式?

Android 在两个 View 之间放置一个 ImageView

android - 如何在 android 的 xml 中将我的文本轮廓着色为黑色

java - 使用 java 的 RSS 阅读器和解析器

java - Android Studio 中播放的本地视频存放在哪里

android - 在 Android 中解析资源文件时出现 XmlPullParserException

java - XML Pull Parser 和 SAX Parser 有什么区别

Android XML 字符串 'et cetera' 编码?