处理特殊字符XML数据在Java解析 [英] Handle special character for XML Data to parse in Java

查看:171
本文介绍了处理特殊字符XML数据在Java解析的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我刚刚学会如何与ListView的工作,并在Java中解析XML数据按照此的教程。但是,因为XML数据包含一些特殊的字符,我得到一个错误。可能有人好心咨询我关于这个问题的?

这是我的XML数据的样子。

 <菜单><项目>
    < ID> 1 LT; / ID>
    <问题>什么是我的电话号码<?/问题>
    <答案>我的电话号码为000-000-0000< /应答>
< /项目><项目>
    < ID> 2'; / ID>
    <问题>什么是我的传真号码<?/问题>
    <答案>我的传真号码为000-000-0000< /应答>
< /项目><项目>
    <&ID→3 LT; / ID>
    <问题>什么是我的邮寄地址<?/问题>
    <应答和gt;此处我的地址和LT; /应答>
< /项目><项目>
    <&ID GT; 4℃; / ID>
    <问题>什么是我的网址<?/问题>
    <应答和GT;的https://mywebsite.com/Login/Login.aspx CID = 53044&安培; LNG = EN-US< /应答>
< /项目>&所述; /菜单>

这里是Java类。

 公共类FaqsQuestionsActivity扩展ListActivity {
    静态最终字符串URL =htt​​p://myweb.com/faq_list.xml;
    // XML节点键
    静态最后弦乐KEY_ITEM =项; //父节点
    静态最后弦乐KEY_ID =ID;
    静态最后弦乐KEY_QUESTION =问题;
    静态最后弦乐KEY_ANSWER =答案;    @覆盖
    公共无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.faqs_questions);        ArrayList的<&HashMap的LT;字符串,字符串>>菜单项=新的ArrayList<&HashMap的LT;字符串,字符串>>();        XMLParser的解析器=新XMLParser的();
        字符串XML = parser.getXmlFromUrl(URL); //获取XML
        文档的文档= parser.getDomElement(XML); //获得DOM元素        节点列表NL = doc.getElementsByTagName(KEY_ITEM);        的for(int i = 0; I< nl.getLength();我++){            HashMap的<字符串,字符串>地图=新的HashMap<字符串,字符串>();
            元素e =(元)nl.item(I)            map.put(KEY_ID,parser.getValue(即KEY_ID));
            map.put(KEY_QUESTION,parser.getValue(即KEY_QUESTION));
            map.put(KEY_ANSWER,parser.getValue(即KEY_ANSWER));            menuItems.add(地图);
        }        ListAdapter适配器=新SimpleAdapter(这一点,菜单项,R.layout.faqs_question_list,
        新的String [] {KEY_QUESTION,KEY_ANSWER},新的INT [] {R.id.question,R.id.answer});
        setListAdapter(适配器);        ListView控件LV = getListView();        lv.setOnItemClickListener(新OnItemClickListener(){            公共无效onItemClick(适配器视图<>母公司,观景,INT位置,长的id){
                字符串的问题=((的TextView)view.findViewById(R.id.question))的getText()的toString()。
                字符串的答案=((的TextView)view.findViewById(R.id.answer))的getText()的toString()。
                在意向=新意图(getApplicationContext(),FaqsAnswersActivity.class);                in.putExtra(KEY_QUESTION,问题);
                in.putExtra(KEY_ANSWER,答案);
                startActivity(在);            }
        });
    }
}


解决方案

您可以尝试连接code你的XML尝试分析它之前:

 字符串连接codedXML = URLEn coder.en code(XML);

,然后解析。

I just learn how to working with ListView and parsing XML data in Java following this tutorial. However, I'm getting an error because the XML data contains some special characters. Could someone kindly advice me on this issue?

This is my XML Data looks like.

<menu>

<item>      
    <id>1</id>
    <question>What's my phone number?</question>
    <answer>my phone number is "000-000-0000".</answer>        
</item>  

<item>      
    <id>2</id>
    <question>What's my fax number?</question>
    <answer>my fax number is "000-000-0000"</answer>        
</item>  

<item>      
    <id>3</id>
    <question>What's my mailing address?</question>
    <answer>my address here</answer>        
</item> 

<item>      
    <id>4</id>
    <question>What's my web address?</question>
    <answer>https://mywebsite.com/Login/Login.aspx?cID=53044&lng=en-US</answer>        
</item> 

</menu>

And here is the Java class.

public class FaqsQuestionsActivity extends ListActivity {


    static final String URL = "http://myweb.com/faq_list.xml";
    // XML node keys
    static final String KEY_ITEM = "item"; // parent node   
    static final String KEY_ID = "id";
    static final String KEY_QUESTION = "question";
    static final String KEY_ANSWER = "answer";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.faqs_questions);

        ArrayList<HashMap<String, String>> menuItems = new ArrayList<HashMap<String, String>>();

        XMLParser parser = new XMLParser();
        String xml = parser.getXmlFromUrl(URL); // getting XML
        Document doc = parser.getDomElement(xml); // getting DOM element

        NodeList nl = doc.getElementsByTagName(KEY_ITEM);

        for (int i = 0; i < nl.getLength(); i++) {

            HashMap<String, String> map = new HashMap<String, String>();
            Element e = (Element) nl.item(i);

            map.put(KEY_ID, parser.getValue(e, KEY_ID));
            map.put(KEY_QUESTION, parser.getValue(e, KEY_QUESTION ));
            map.put(KEY_ANSWER, parser.getValue(e, KEY_ANSWER));

            menuItems.add(map);
        }

        ListAdapter adapter = new SimpleAdapter(this, menuItems, R.layout.faqs_question_list,
        new String[] { KEY_QUESTION, KEY_ANSWER  }, new int[] {R.id.question, R.id.answer});


        setListAdapter(adapter);

        ListView lv = getListView();

        lv.setOnItemClickListener(new OnItemClickListener() {

            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {


                String question = ((TextView) view.findViewById(R.id.question)).getText().toString();
                String answer = ((TextView) view.findViewById(R.id.answer)).getText().toString();


                Intent in = new Intent(getApplicationContext(), FaqsAnswersActivity.class);

                in.putExtra(KEY_QUESTION, question);
                in.putExtra(KEY_ANSWER, answer);
                startActivity(in);

            }
        });
    }
}

解决方案

You can try to encode your XML before trying to parse it:

String encodedXML = URLEncoder.encode(xml);

And then parse.

这篇关于处理特殊字符XML数据在Java解析的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆