我在资源文件夹中有一个XML文件。
我在我的Activity中解析它并显示它。
在XML文件中,我的数据带有<
符号,我使用<
at
&lt;符号
但是,符号没有显示,只有符号才能显示文字。
ex "hi < 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 < 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);
}
}
}
如何解决这个问题
提前致谢...!
答案 0 :(得分:1)
SAX解析器可以在所选择的characters()方法的多次调用中向ContentHandler提供字符数据。您的characters()方法将每个子字符串放在相同的哈希表条目中,覆盖任何以前的子字符串;你需要连接它们。
答案 1 :(得分:0)
可能是你直接使用“&lt;”在xml文件中写,
所以使用Value - &gt; String class
==&gt; string name =“temperature_lt”value is = Temperature&amp; l t;(注意这里忽略空格)
和extractin xml文件
==&GT;机器人:文本= “@串/ temperature_lt”
试试吧,