Как использовать <символ в XML-файле ...? - PullRequest
0 голосов
/ 13 декабря 2011

У меня есть файл XML в папке активов.

Я анализирую его в своей деятельности и отображаю его.

В файле XML у меня есть данные с символом <, я использую&lt; at <символ. </p>

Но символ не является спорным и текст после символа только, что я получаю.

ex "hi &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);
        }
    }

}

Как сделатьрешить эту проблему

Заранее спасибо ...!

Ответы [ 2 ]

1 голос
/ 13 декабря 2011

Синтаксический анализатор SAX может предоставлять символьные данные в ContentHandler при любом количестве вызовов метода characters (), которые он выберет.Ваш метод characters () помещает каждую из подстрок в одну и ту же запись хеш-таблицы, перезаписывая все предыдущие подстроки;вам нужно объединить их.

0 голосов
/ 13 декабря 2011

может быть, вы непосредственно используете "<" в записи XML-файла, </p>

Поэтому используйте Value -> String class

==> string name = "Temperature_lt" значение = Температура < (обратите внимание, здесь игнорировать пробел)

и извлекать xml-файл

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

попробовать,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...