【问题标题】:How to use < symbol in xml file...?如何在xml文件中使用<符号...?
【发布时间】:2012-01-19 03:10:30
【问题描述】:

我在 assets 文件夹中有一个 XML 文件。

我在我的 Activity 中解析它并显示它。

在 XML 文件中,我有一个带有 &amp;lt; 符号的数据,我使用 &amp;lt; at

但是,符号没有显示,符号后面的文字只有我得到。

"hi &amp;lt; hello"

解析结果只会是hello

解析代码

try {
            SAXParserFactory spf = SAXParserFactory.newInstance();
            SAXParser sp = spf.newSAXParser();
            XMLReader xr = sp.getXMLReader();
            SecondHandler shandler = new SecondHandler();
            xr.setContentHandler(shandler);
            InputStream in = this.getAssets().open(fileName);
            xr.parse(new InputSource(in));
            itemlist = shandler.getParsedData();            
        } catch (Exception e) {
            System.out.println("Error : " + e);
        }

            Map<String, String> item = (Map<String, String>) list.get(5);
        String qus = item.get("question");
        String ans = item.get("answer");
    }

xml 文件..

..........
<dict>
            <question>hello</question>
            <answer>I am &lt; 5 you</answer>
        </dict>
......

处理程序代码。

public class SecondHandler extends DefaultHandler {
    private String tagName;
    @SuppressWarnings("rawtypes")
    private ArrayList<Map> dataSet;
    private Map<String, String> dictionary;

    @SuppressWarnings("rawtypes")
    public ArrayList<Map> getParsedData() {
        return dataSet;
    }

    @Override
    public void startDocument() throws SAXException {

    }

    @Override
    public void endDocument() throws SAXException {
        // Nothing to do
    }

    @SuppressWarnings("rawtypes")
    @Override
    public void startElement(String namespaceURI, String localName,
            String qName, Attributes atts) throws SAXException {
        tagName = localName;
        if (localName.equals("array")) {
            this.dataSet = new ArrayList<Map>();
        } else if (localName.equals("dict")) {
            dictionary = new HashMap<String, String>();
        }
    }

    @Override
    public void endElement(String namespaceURI, String localName, String qName)
            throws SAXException {
        if (localName.equals("array")) {
        } else if (localName.equals("dict")) {
            dataSet.add(dictionary);
        }
    }

    @Override
    public void characters(char ch[], int start, int length) {
        String string = new String(ch, start, length);
        string = string.replaceAll(" ", "");
        string = string.replaceAll("\n", "");
        string = string.replaceAll("\t", "");       
        if (string.length() > 0 && string != null) {
            dictionary.put(tagName, new String(ch, start, length));
            // System.out.println("Dictionary : " + dictionary);
        }
    }

}

如何解决这个问题

提前谢谢...!

【问题讨论】:

  • 你是怎么解析的?给我们看一些代码。
  • 它正在做 XML 处理,对吧?我们也需要看到这一点。

标签: android xml unicode


【解决方案1】:

SAX 解析器可以在任意多次调用 characters() 方法中向 ContentHandler 提供字符数据。您的 characters() 方法将每个子字符串放在同一个哈希表条目中,覆盖任何以前的子字符串;您需要将它们连接起来。

【讨论】:

  • 我部分理解了你在说什么。你能用代码更详细地解释一下吗?
【解决方案2】:

可能你在xml文件中直接使用“

所以使用Value-->String类

==>string name="temperature_lt" value is= Temperature & lt;(注意这里忽略空格)

并提取xml文件

==>android:text="@string/temperature_lt"

试试看,

【讨论】:

  • 我不能使用 android:text 它不是布局。
猜你喜欢
  • 2016-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多