【问题标题】:Parse XML special characters?解析 XML 特殊字符?
【发布时间】:2011-11-15 05:04:06
【问题描述】:

从过去 2 天开始,我正在搜索如何使用特殊字符解析 XML,例如 !@#$%^&*()':;",但我没有得到足够的信息来实现它。可以任何人请给我一些建议..我该怎么做??

【问题讨论】:

  • 你的问题得到解决了吗?

标签: android android-manifest


【解决方案1】:

您可以尝试this 之类的方法,即为该特殊字符提供参考。

Character Reference

&   -   &
<   -   &lt;
>   -   &gt;
"   -   &quot;
'   -   &apos;

更新:

我已经在这里回答了您的问题,请查看Answer

【讨论】:

  • 我正在使用 XML SAX 解析器,它正在解析除 & 和 <...>
  • 请查看我更新的答案,如果您有任何问题,请告诉我。
【解决方案2】:
documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
document = documentBuilder.parse(inputSource);
document.getDocumentElement().normalize();

normalize 方法可以为您处理特殊字符和实体。

public abstract void normalize()

在 API 级别 1 中添加

将所有文本节点放在此子树的完整深度中 节点,包括属性节点,变成一个“正常”的形式,其中只有 结构(例如,元素、cmets、处理指令、CDATA 部分和实体引用)分隔文本节点,即有 既不是相邻的 Text 节点,也不是空的 Text 节点。这可以用来 确保文档的 DOM 视图与保存时相同 并重新加载,并且在操作(例如 XPointer [XPointer] 查找)依赖于特定的文档树 结构将被使用。如果参数“normalize-characters”的 附加到 Node.ownerDocument 的 DOMConfiguration 对象是 是的,此方法还将完全规范化 Text 的字符 节点。

注意:如果文档包含 CDATASection,则 单独规范化操作可能还不够,因为 XPointers 可以 不区分 Text 节点和 CDATASection 节点。

【讨论】:

    【解决方案3】:
    1. 有效的 XML 文件应该包含“&”、“”或“@”这些字符中的任何一个。它应该具有命名实体“&amp”、“&lt”、“&gt”、“&reg”、“&quot”、“&apos”等:

    xml parsing with "&amp;", "&reg;", but still getting errors

    1. 如果 XML 文件有效,那么解析(我认为使用“android.util.XML”)应该“正常工作”。

    这些链接也可能有帮助:

    【讨论】:

    • 我正在使用 XML SAX 解析器,它正在解析除 & 和 <...>
    【解决方案4】:
     public void XmlParsing(String questions_xml)
    {
        try {
    
            /** Handling XML */
            SAXParserFactory spf = SAXParserFactory.newInstance();
            SAXParser sp = spf.newSAXParser();
            XMLReader xr = sp.getXMLReader();
    
            /** Create handler to handle XML Tags ( extends DefaultHandler ) */
            MyXmlHandler myXMLHandler = new MyXmlHandler();
            xr.setContentHandler(myXMLHandler);
    
            xr.parse( new InputSource(new StringReader(questions_xml)));
    
    
            } catch (Exception e) {
                String err = (e.getMessage()==null)?"XMLParsing exception":e.getMessage();
                Log.e("XMLParsing Exception",err); 
            }
    
    
    }
    now when I am trying to parse & then my app crashes?
    

    【讨论】:

    • 或者它只显示 & 之前的字符串
    【解决方案5】:

    free command line tool 用于将文本中带有特殊字符的文件转换为有效的 XML。它还确保文件编码与声明中指定的匹配。

    还有一个 Java 开发人员套件,允许您使用解析器来解析此类文件(称为 XPL),作为 XML 的替代方案或对 XML 的预处理。它使用称为 StAX-PL 的类似 StAX 的过程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-10
      相关资源
      最近更新 更多