Html到xmlParser

时间:2013-05-27 12:39:01

标签: java android xml-parsing html-parsing

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

  • 在XML文件中;使用& lt; & gt; 代替< > 工作
  • 是否可以直接在xml文件中使用html标签(如<和>)?
  • 如果没有,如何解决这个问题?我需要转换所有“<”到“& lt; ”......等等

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

在XML文件中:

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

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

2 个答案:

答案 0 :(得分:1)

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

XHTML (wikipedia)

答案 1 :(得分:0)

假设,我的student.xml文件位于资产文件夹中,如

<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);
    }
相关问题