`

xml解析<![CDATA

dom 
阅读更多
1.使用dom解析

public static void main(String args[])
{
String xmls="<?xml version=\"1.0\" encoding=\"gb2312\"?><root><![CDATA[嘉庆年间]]></root>";
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db; 
Document doc; 

try {
db = dbf.newDocumentBuilder(); 
InputStream x=new ByteArrayInputStream(xmls.getBytes());;
doc = db.parse(x);
Element root=doc.getDocumentElement();
System.out.print(root.getFirstChild().getNodeValue()); 
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();

}
2.使用xmlpullparser
public class RssParser {


        private int currentstate = -1;

        private boolean isItemTAG = false;


        private RssItem rssItem;

        private RssFeed rssFeed;


        final int TITLE = 1;

        final int LINK = 2;

        final int DESCRIPTION = 3;

        final int PUBDATE = 4;

        public void ParserRss(String url) throws Exception {


                XmlPullParserFactory xmlPullParserFactory = XmlPullParserFactory.newInstance();

                xmlPullParserFactory.setNamespaceAware(true);

                XmlPullParser xmlPullParser = xmlPullParserFactory.newPullParser();

                URL urlAddress = new URL(url);

                xmlPullParser.setInput(urlAddress.openStream(), "gbk");

                int eventType = xmlPullParser.getEventType();

                while (eventType != xmlPullParser.END_DOCUMENT) {

                        if (eventType == xmlPullParser.START_DOCUMENT) {

                                System.out.println("start Document...");

                                rssFeed = new RssFeed();

                        } else if (eventType == xmlPullParser.END_DOCUMENT) {

                                System.out.println("end Document...");

                        } else if (eventType == xmlPullParser.START_TAG) {

                                if (xmlPullParser.getName().equals("item")) {

                                        rssItem = new RssItem();

                                        isItemTAG = true;

                                }

                                if (xmlPullParser.getName().equals("title")) {

                                        currentstate = TITLE;

                                }

                                if (xmlPullParser.getName().equals("link")) {

                                        currentstate = LINK;

                                }

                                if (xmlPullParser.getName().equals("description")) {

                                        currentstate = DESCRIPTION;

                                }

                                if (xmlPullParser.getName().equals("pubDate")) {

                                        currentstate = PUBDATE;

                                }

                        } else if (eventType == xmlPullParser.END_TAG) {

                                if (xmlPullParser.getName().equals("item")) {

                                        rssFeed.addItem(rssItem);

                                }


                        } else if (eventType == xmlPullParser.TEXT) {

                                if (isItemTAG) {

                                        switch (currentstate) {

                                        case TITLE:

                                                rssItem.setTitle(clearSpecialChar(xmlPullParser.getText()));

                                                currentstate = -1;

                                                break;

                                        case LINK:

                                                rssItem.setLink(clearSpecialChar(xmlPullParser.getText()));

                                                currentstate = -1;

                                                break;

                                        case DESCRIPTION:

                                                rssItem.setDescription(clearSpecialChar(xmlPullParser.getText()));

                                                currentstate = -1;

                                                break;

                                        case PUBDATE:

                                                rssItem.setPubData(clearSpecialChar(xmlPullParser.getText()));

                                                currentstate = -1;

                                                break;

                                        default:

                                                break;

                                        }

                                }

                        }


                        eventType = xmlPullParser.next();

                }

        }
       

        public RssFeed getFeed(){

                return rssFeed;

        }

       

        private String clearSpecialChar(String s){

                Pattern pattern = Pattern.compile("\\s|\\r|\\n|\\t");

                Matcher matcher = pattern.matcher(s);

                return matcher.replaceAll("").trim();

        }

}
分享到:
评论

相关推荐

    JAVA对象转换成XML(CDATA)

    当遇到包含特殊字符如 "&lt;" 和 "&" 的文本时,XML解析器可能会产生错误,因为这些字符在XML语法中有特定含义。为了解决这个问题,我们可以使用CDATA(Character Data)段来封装这些文本,使得XML解析器将其视为纯文本...

    Mybatis 中的&amp;lt;![CDATA[ ]]&amp;gt;浅析

    [CDATA[ ]]&gt; 可以将特殊字符(如 `&lt;`、`&gt;`、`&` 等)包含在 XML 文件中,使得这些特殊字符不被解析器转义。 2. 提高代码可读性:使用 &lt;![CDATA[ ]]&gt; 可以将复杂的 SQL 语句包含在 XML 文件中,使得代码更加简洁和易...

    PHP cdata 处理(详细介绍)

    CDATA部分用于包含那些不应该被XML解析器当作标记来解析的文本数据,例如程序代码或JavaScript代码等。CDATA部分由“&lt;![CDATA[”开始,到“]]&gt;”结束。由于SimpleXML不支持CDATA,因此在使用SimpleXML解析XML时,...

    XML:标签CDATA用法

    **CDATA**(Character Data)是一种特殊的文本区域,它被XML解析器视为纯文本数据,并不会对其进行解析或处理。这意味着在CDATA段落内的任何XML标签或者实体引用都不会被解析器识别为真正的标签或实体。 ##### 形式与...

    C#读取XML的CDATA节点内容实例详解

    CDATA节点是一种特殊的XML节点,用于存储不需要被XML解析器解析的文本数据。在实际开发中,我们经常需要读取CDATA节点中的数据,以便进行后续的处理。 首先,让我们看一下实例代码。在这个示例中,我们有一个XML...

    将txt文件转换成xml文件的java代码

    2. **解析TXT内容**:根据TXT文件的结构,分析每行数据并将其转化为XML元素。这可能涉及到数据的分割、解析和格式化。 3. **构建XML文档**:使用Java的`DocumentBuilderFactory`和`DocumentBuilder`创建一个XML文档...

    php生成xml时添加CDATA标签的方法

    CDATA部分会告诉XML解析器忽略内部文本中的特殊字符,如"&lt;", "&gt;", "&"等,它们会被当作普通字符处理。 PHP提供了DOMDocument类用于操作XML文件,包括创建、编辑和输出。DOMDocument类中的createCDATASection方法...

    dtd定义xml dom4j解析xml小类

    DTD 定义 XML DOM4J 解析 XML 小类 XML 文档类型定义(DTD)是用来定义一段合法的 XML 文档块的。它用来验证你的 XML 文档是以一系列合法的元素构成的。DTD 可以在 XML 文档内部定义,也可以通过外部文件的方式引入...

    chapter23 实践习题1

    在本章的实践习题中,我们探讨了如何使用XML(可扩展标记语言)来表示数据,并给出了关于数据库的示例。...这对于构建和解析结构化的数据交换格式至关重要,尤其是在数据库、Web服务和各种应用程序之间交换数据时。

    xml教程<<无废话xml>>

    - SAX是一种基于事件驱动的XML解析方式,适用于处理大型XML文档,因为它不需要一次性加载整个文档到内存中。 #### 3. XSLT (Extensible Stylesheet Language Transformations) - XSLT用于转换XML文档,可以将一个...

    页里面 CDATA的作用说明

    CDATA节可以将XML数据包装起来,以避免浏览器对特殊字符的解析。 CDATA节是HTML文档中的一种重要机制,可以用来包装特殊字符或实体引用,以避免浏览器对这些字符的解析。但是,需要注意不同浏览器的兼容性问题,并...

    xmlspy教程.pdf

    在文件中,我们可以看到DTD定义了Contacts文档的结构,包含了对&lt;Contacts&gt;、&lt;Person&gt;、&lt;Name&gt;、&lt;Address&gt;、&lt;Country&gt;、&lt;Province&gt;、&lt;City&gt;、&lt;Phone&gt;、&lt;Email&gt;等元素的定义,以及对&lt;Contacts&gt;和&lt;Person&gt;元素如何嵌套...

    第14讲 XML文件.ppt

    XML文档通常以XML声明开始,告知解析器文档的版本、字符编码和是否独立。例如: ```xml &lt;?xml version="1.0" encoding="UTF-8"?&gt; ``` 这里的`encoding="UTF-8"`指定文档使用UTF-8字符集,`standalone="yes"`表明...

    xml解析文档

    ### XML解析文档详解 #### 一、XML文档的定义与约束 XML(Extensible Markup Language,可扩展标记语言)是一种标记语言,旨在提供一种统一的数据交换格式,使得不同系统之间可以方便地共享数据。为了确保XML文档...

    DTD教程,来自3cSchool

    5. **CDATA(Character Data)**:不会被解析器解析的字符数据,通常用于包含XML解析器不能识别的特殊字符序列。 通过理解这些基本构建模块和DTD的使用,开发者能够创建结构严谨、易于理解和交换的XML文档。在实际...

    DTD 教程 XML java

    5. **CDATA(Character Data)**:字符数据,用于标记一段不进行特殊解析的文本,如`&lt;![CDATA[ ... ]]&gt;`。 理解这些基本概念对于有效地创建和处理XML文档至关重要。DTD提供了一种强大的工具,用于确保XML数据的质量...

    异构系统xml交互程序

    本软件基于工作需要而开发,主要特点采用java开发,可在绝大多数平台使用,可灵活订制数据抽取后xml文件格式,可配置是否采用zip进行压缩传输,可灵活配置解析xml文件的某类节点信息。 欢迎相互交流,QQ:37605250,...

    zyXML解析类模块源码

    zyXML 是一个轻便、小巧的,纯易语言代码来解析XML的模块。优点:。1、不依赖任何DLL、支持库、系统组件(Microsoft.XMLDOM等对象)。2、支持UTF-8 、UTF-16 等编码。3、支持 XPath 语法来查询节点。4、支持 CDATA ...

Global site tag (gtag.js) - Google Analytics