1

我正在通过 xmlPullParser 将 xml 内容导入数据库。但是如果 xml 文件包含 html 标签,则 xmlParser 错误。

  • 在 XML 文件中;使用< > 而不是<>作品

  • 是否可以直接在 xml 文件中使用 html 标签(如 < 和 > )?

  • 如果没有,如何解决这个问题?我是否需要将所有“<”转换为“ < ”...等

    错误:XmlPullParserException:非法:“<”在属性值内

在 XML 文件中:

// DOESN'T WORK
 <sample
note= "<b>Text</b>"
 />

 // WORKS
<sample
note= "&lt;b&gt; Text &lt;/b&gt; "      
/>
4

2 回答 2

1

目前尚不清楚您的问题来自哪里(如评论中所述,您的...标签是 xml-ok),不管这是我的两分钱:如果您需要一个可以在大多数浏览器上轻松显示的 xml 文档(或html 文件,可以轻松解析)我建议您不要浪费时间重新发明轮子,试图将 HTML 强制转换为 XML,而是尝试 XHTML:

XHTML(维基百科)

于 2013-05-27T12:57:05.803 回答
0

假设,我的 student.xml 文件位于 assets 文件夹中,例如,

<students>
    <student id="11">
        <roll>1</roll>
        <name>sachin</name>
        <result>pass</result>
    </student>
    <student id="12">
        <roll>2</roll>
        <name>sehwag</name>
        <result>pass</result>
    </student>
    <student id="13">
        <roll>3</roll>
        <name>rohit</name>
        <result>fail</result>
    </student>
</students>

写下按钮 Onclick 上的代码:

try {

            XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
            XmlPullParser xpp = factory.newPullParser();

            xpp.setInput(getAssets().open("student.xml"), null);
            int event = xpp.getEventType();

            while (event != XmlPullParser.END_DOCUMENT) {

                if (event == XmlPullParser.START_DOCUMENT) {

                } else if (event == XmlPullParser.START_TAG) {
                    tname = xpp.getName();
                    if (tname.equalsIgnoreCase("student")) {
                        str += xpp.getAttributeValue(0).toString() + " : ";

                    }

                } else if (event == XmlPullParser.END_TAG) {

                } else if (event == XmlPullParser.TEXT) {

                    if (tname.equalsIgnoreCase("roll")) {
                        str += xpp.getText();
                        // event = xpp.next();
                    } else if (tname.equalsIgnoreCase("name")) {
                        str += xpp.getText();
                        // event = xpp.next();
                    } else if (tname.equalsIgnoreCase("result")) {
                        str += xpp.getText();
                        // event = xpp.next();
                    }

                }
                event = xpp.next();
            }

        } catch (XmlPullParserException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        tv.setText(str);
    }
于 2013-05-27T13:13:34.543 回答