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();
}
}
分享到:
相关推荐
当遇到包含特殊字符如 "<" 和 "&" 的文本时,XML解析器可能会产生错误,因为这些字符在XML语法中有特定含义。为了解决这个问题,我们可以使用CDATA(Character Data)段来封装这些文本,使得XML解析器将其视为纯文本...
[CDATA[ ]]> 可以将特殊字符(如 `<`、`>`、`&` 等)包含在 XML 文件中,使得这些特殊字符不被解析器转义。 2. 提高代码可读性:使用 <![CDATA[ ]]> 可以将复杂的 SQL 语句包含在 XML 文件中,使得代码更加简洁和易...
CDATA部分用于包含那些不应该被XML解析器当作标记来解析的文本数据,例如程序代码或JavaScript代码等。CDATA部分由“<![CDATA[”开始,到“]]>”结束。由于SimpleXML不支持CDATA,因此在使用SimpleXML解析XML时,...
**CDATA**(Character Data)是一种特殊的文本区域,它被XML解析器视为纯文本数据,并不会对其进行解析或处理。这意味着在CDATA段落内的任何XML标签或者实体引用都不会被解析器识别为真正的标签或实体。 ##### 形式与...
CDATA节点是一种特殊的XML节点,用于存储不需要被XML解析器解析的文本数据。在实际开发中,我们经常需要读取CDATA节点中的数据,以便进行后续的处理。 首先,让我们看一下实例代码。在这个示例中,我们有一个XML...
2. **解析TXT内容**:根据TXT文件的结构,分析每行数据并将其转化为XML元素。这可能涉及到数据的分割、解析和格式化。 3. **构建XML文档**:使用Java的`DocumentBuilderFactory`和`DocumentBuilder`创建一个XML文档...
CDATA部分会告诉XML解析器忽略内部文本中的特殊字符,如"<", ">", "&"等,它们会被当作普通字符处理。 PHP提供了DOMDocument类用于操作XML文件,包括创建、编辑和输出。DOMDocument类中的createCDATASection方法...
DTD 定义 XML DOM4J 解析 XML 小类 XML 文档类型定义(DTD)是用来定义一段合法的 XML 文档块的。它用来验证你的 XML 文档是以一系列合法的元素构成的。DTD 可以在 XML 文档内部定义,也可以通过外部文件的方式引入...
在本章的实践习题中,我们探讨了如何使用XML(可扩展标记语言)来表示数据,并给出了关于数据库的示例。...这对于构建和解析结构化的数据交换格式至关重要,尤其是在数据库、Web服务和各种应用程序之间交换数据时。
- SAX是一种基于事件驱动的XML解析方式,适用于处理大型XML文档,因为它不需要一次性加载整个文档到内存中。 #### 3. XSLT (Extensible Stylesheet Language Transformations) - XSLT用于转换XML文档,可以将一个...
CDATA节可以将XML数据包装起来,以避免浏览器对特殊字符的解析。 CDATA节是HTML文档中的一种重要机制,可以用来包装特殊字符或实体引用,以避免浏览器对这些字符的解析。但是,需要注意不同浏览器的兼容性问题,并...
在文件中,我们可以看到DTD定义了Contacts文档的结构,包含了对<Contacts>、<Person>、<Name>、<Address>、<Country>、<Province>、<City>、<Phone>、<Email>等元素的定义,以及对<Contacts>和<Person>元素如何嵌套...
XML文档通常以XML声明开始,告知解析器文档的版本、字符编码和是否独立。例如: ```xml <?xml version="1.0" encoding="UTF-8"?> ``` 这里的`encoding="UTF-8"`指定文档使用UTF-8字符集,`standalone="yes"`表明...
### XML解析文档详解 #### 一、XML文档的定义与约束 XML(Extensible Markup Language,可扩展标记语言)是一种标记语言,旨在提供一种统一的数据交换格式,使得不同系统之间可以方便地共享数据。为了确保XML文档...
5. **CDATA(Character Data)**:不会被解析器解析的字符数据,通常用于包含XML解析器不能识别的特殊字符序列。 通过理解这些基本构建模块和DTD的使用,开发者能够创建结构严谨、易于理解和交换的XML文档。在实际...
5. **CDATA(Character Data)**:字符数据,用于标记一段不进行特殊解析的文本,如`<![CDATA[ ... ]]>`。 理解这些基本概念对于有效地创建和处理XML文档至关重要。DTD提供了一种强大的工具,用于确保XML数据的质量...
本软件基于工作需要而开发,主要特点采用java开发,可在绝大多数平台使用,可灵活订制数据抽取后xml文件格式,可配置是否采用zip进行压缩传输,可灵活配置解析xml文件的某类节点信息。 欢迎相互交流,QQ:37605250,...
zyXML 是一个轻便、小巧的,纯易语言代码来解析XML的模块。优点:。1、不依赖任何DLL、支持库、系统组件(Microsoft.XMLDOM等对象)。2、支持UTF-8 、UTF-16 等编码。3、支持 XPath 语法来查询节点。4、支持 CDATA ...