【问题标题】:Ignore character which is not supporting in XML忽略 XML 中不支持的字符
【发布时间】:2016-05-27 04:16:24
【问题描述】:

如何在读取 XML 文件时忽略 '&' 租船人。 我想要的是,首先我读取 xml 文件,然后将内容打印到列表视图.. 但在某些情况下,我的内容包含一些特殊字符,例如

&,',"

等等。

我怎么能忽略? 这是我从 sdcard 读取 xml 的代码。

MainActivity

 XmlPullHandler parser = new XmlPullHandler();
            File file = new File(Environment.getExternalStorageDirectory()+ "/myfile.xml");
            FileInputStream fis = new FileInputStream(file);

PullHendler 类

 XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
            factory.setNamespaceAware(true);

            XmlPullParser  parser = factory.newPullParser();

             parser.setInput(new InputStreamReader(is));

OR 这是否可以在读取文件时替换字符.. (即 & 被 &amp 替换)

这是 Myfile.Xml 文件

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <MyLine>   
<Line>Live your life sharing the Beauty & Happiness, that you have today.
</Line> 
</MyLine>

这是我的 pullHandler 类

 int eventType = parser.getEventType();
      while (eventType != XmlPullParser.END_DOCUMENT) {
                    String tagname = parser.getName();
                    switch (eventType) {
                        case XmlPullParser.START_TAG:
                            if (tagname.equalsIgnoreCase("Line")) {

                                line = new Lines();
                            }
                            break;

                        case XmlPullParser.TEXT:
                            text = parser.getText();
                            break;

                        case XmlPullParser.END_TAG:
                            if (tagname.equalsIgnoreCase("Line")) {
                                lines.add(line);
                                lines.setLine(text);
                            }
                            break;

                        default:
                            break;
                    }
                    eventType = parser.next();
                }

            } catch (XmlPullParserException e) {e.printStackTrace();} catch (IOException e)
            {
                e.printStackTrace();
            } catch (NullPointerException e){
                e.printStackTrace();
            }

            return lines;
        }

【问题讨论】:

  • 为什么要忽略它们有什么问题??以及从文件中获取 String 数据的代码在哪里??
  • 问题是它给出了不支持的格式例外。我试图处理它但没有工作.. 因为 xml 文件不支持这种格式
  • 显示一些你得到异常的 XML 文件
  • 分享完整代码,告诉我异常发生在哪一行..!!
  • 为什么要设置两次输入?告诉我你在设置输入后是如何使用解析器的。

标签: android xml android-studio xmlpullparser


【解决方案1】:

你可以这样试试。为line = line.replaceAll("&amp;", "&amp;amp;")之后的其他HTML实体添加替换

String fileData = "";
String line = "";

BufferedReader br=new BufferedReader(new InputStreamReader(is));

while((line = br.readLine()) != null)
{
    line = line.replace("&", "&amp;");
    fileData += line;
    fileData += "\n";
}

parser.setInput(new StringReader(fileData));  

虽然随着内存的消耗,这并不高效,因为它将整个 XML 文件加载到一个字符串中。如果您展示您正在使用 XML 解析器做什么,我将能够提供更好的解决方案。

【讨论】:

    猜你喜欢
    • 2021-07-22
    • 1970-01-01
    • 2020-01-20
    • 1970-01-01
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    • 2014-02-07
    • 2014-10-27
    相关资源
    最近更新 更多