- 浏览: 665705 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (173)
- ajax (4)
- ant (4)
- css (14)
- eclipse (1)
- exe4j (0)
- hibernate (7)
- html (29)
- http (2)
- install4j (0)
- java (35)
- javascript (31)
- jdbc (1)
- jquery (2)
- jsp (15)
- linux命令 (8)
- ooad (2)
- properties (3)
- servlet (1)
- spring (3)
- struts (6)
- swing (4)
- thread (2)
- version_control (1)
- webservice (4)
- xml (4)
- 数据库 (19)
- 正则表达式 (5)
- 其他 (16)
- 面试题 (1)
- 框架 (9)
- maven (1)
- util (29)
- 设计模式 (1)
最新评论
-
herodie4444:
看起来好像不难。
Java Struts2创建Excel文件并实现文件下载 -
心轨翼:
Java遍历Set集合方法 -
魔鬼的献祭:
...
java的web开发分页工具类 -
Nmxszxsl:
能发一个没有被墙的代码到我的邮箱吗?万分感谢。54365156 ...
Google翻译post提交无长度限制的在线翻译例子 -
782763595:
...
jar包混淆器介绍
这是一个目前在做的项目需要使用的xml文件读写实现。记起来以备后忘和供有需要的同学学习。
xml文件读写类:
xml文件内容:
xml文件读写类:
import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; import org.jdom.Document; import org.jdom.Element; import org.jdom.JDOMException; import org.jdom.input.SAXBuilder; import org.jdom.output.Format; import org.jdom.output.XMLOutputter; import org.lt.cj.config.entities.ConfigModel; import org.lt.cj.config.entities.TMallConfigModel; import org.lt.cj.core.Seed; public class XMLConfigWriter { /*创建淘宝商城的配置文件*/ public Document buildUpMallDocument(TMallConfigModel missionConfig) throws MissionConfigException, EnterUrlsException { if (missionConfig == null) { throw new MissionConfigException(); } else if (missionConfig.getSeeds().isEmpty()) { return null; } // Create the root element Element rootElement = new Element("website"); /* 设置网站属性 */ /* 设置网站名称 */ rootElement.setAttribute("name", missionConfig.getWebsiteName()); /*设置网站地址*/ rootElement.setAttribute("url", missionConfig.getWebsiteUrl()); //添加任务名称 Element taskElement = new Element("taskName"); taskElement.addContent(missionConfig.getTaskName()); rootElement.addContent(taskElement); //构造种子列表节点 Element seeds = new Element("seeds"); for (int i = 0; i < missionConfig.getSeeds().size(); i++) { Element seedElement = new Element("seed"); Element seedNameElement = new Element("seedName"); seedNameElement.addContent(missionConfig.getSeeds().get(i).getSeedName()); Element seedUrlElement = new Element("seedUrl"); seedUrlElement.addContent(missionConfig.getSeeds().get(i).getUrl()); Element seedSortNameElement = new Element("sortName"); seedSortNameElement.addContent(missionConfig.getSeeds().get(i).getSortName()); seedElement.addContent(seedSortNameElement); seedElement.addContent(seedNameElement); seedElement.addContent(seedUrlElement); seeds.addContent(seedElement); } rootElement.addContent(seeds); //定义匹配的要采集的URL链接fitUrl的节点 Element fiturls = new Element("fitUrls"); for (int i = 0; i < missionConfig.getFitUrlRegs().size(); i++) { Element fitUrl = new Element("fit_url"); fitUrl.addContent(missionConfig.getFitUrlRegs().get(i)); fiturls.addContent(fitUrl); } rootElement.addContent(fiturls);//添加到根节点 //并发工作线程数 Element workingThreadsElement = new Element("workingThreads"); workingThreadsElement.addContent("" + missionConfig.getWorkingThreads()); rootElement.addContent(workingThreadsElement);//添加到根节点 //定义页面编码节点 Element pageEncodingElement = new Element("pageEncoding"); pageEncodingElement.addContent(missionConfig.getPageEncoding()); rootElement.addContent(pageEncodingElement);//添加到根节点 //定义下载图片控制标志节点 Element dwdPhoFlagElement = new Element("dwdPhoFlag"); dwdPhoFlagElement.addContent(missionConfig.getDwdPhoFlag()); rootElement.addContent(dwdPhoFlagElement); //定义原语言节点 Element oriLan = new Element("orien_lan"); oriLan.addContent(missionConfig.getOrigLanguage()); Element transLan = new Element("trans_lan"); transLan.addContent(missionConfig.getTranLanguage()); rootElement.addContent(oriLan);//添加到根节点 rootElement.addContent(transLan);//添加到根节点 //定义匹配抓取信息的产品页面Url节点 Element pageUrlRegs = new Element("pageUrlRegs"); for (int i = 0; i < missionConfig.getPageReg().size(); i++) { Element pageUrl = new Element("pageUrl"); pageUrl.addContent(missionConfig.getFitUrlRegs().get(i)); pageUrlRegs.addContent(pageUrl); } rootElement.addContent(pageUrlRegs);//添加到根节点 Map<String, List<String>> map = missionConfig.getEntityReg(); List<String> list = null; Element pathElements = new Element("pathElements"); //直接循环算啦 //===================================== Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Map.Entry e = (Map.Entry) iter.next(); Element element = new Element(e.getKey() + ""); map = missionConfig.getEntityReg(); list = map.get(e.getKey() + ""); for (int i = 0; i < list.size(); i++) { Element path = new Element("path"); path.addContent(list.get(i)); element.addContent(path); } pathElements.addContent(element); } rootElement.addContent(pathElements); /* ===================================================== */ Document myDocument = new Document(rootElement); return myDocument; } /* 创建文档文件 */ public void createConfigFile(Document document, String filepath) { try { /* 定义XML输出器 */ XMLOutputter xmlOutPutter = new XMLOutputter(); xmlOutPutter.setFormat(Format.getPrettyFormat()); File file = new File(filepath); if (!file.exists()) { if (file.createNewFile()) { FileOutputStream fileOutputStream = new FileOutputStream(filepath); xmlOutPutter.output(document, fileOutputStream); return; } } FileOutputStream fileOutputStream = new FileOutputStream(filepath); xmlOutPutter.output(document, fileOutputStream); } catch (java.io.IOException e) { e.printStackTrace(); } } /* 重写文件 */ public void saveTask(String filePath, ConfigModel configModel) { try { TMallConfigModel tMallConfigModel = (TMallConfigModel) configModel; Document document = buildUpMallDocument(tMallConfigModel); if (document != null) { createConfigFile(document, filePath); } } catch (MissionConfigException ex) { Logger.getLogger(XMLConfigWriter.class.getName()).log(Level.SEVERE, null, ex); } catch (EnterUrlsException ex) { Logger.getLogger(XMLConfigWriter.class.getName()).log(Level.SEVERE, null, ex); } } //* xml文件读取方法 */ public TMallConfigModel readMallDocument(String filePath) { TMallConfigModel model = new TMallConfigModel(); SAXBuilder sb = new SAXBuilder(); try { //读取基本配置信息 Document doc = sb.build(filePath); //构造文档对象 Element root = doc.getRootElement(); //获取根元素 String websiteName = root.getAttributeValue("name"); //获取网站名称 String websiteAddr = root.getAttributeValue("url"); //获取网站地址 model.setWebsiteName(websiteName); //设置网站名称 model.setWebsiteUrl(websiteAddr); //设置网站地址 Element taskNameElement = root.getChild("taskName"); //获取任务名内容 String taskName = taskNameElement.getText(); model.setTaskName(taskName); //获取入口种子列表 List<Seed> seedList = new ArrayList(); Element seedsElement = root.getChild("seeds"); List list = seedsElement.getChildren(); for (int i = 0; i < list.size(); i++) { Element element = (Element) seedsElement.getChildren().get(i); Seed seed = new Seed(); Element seedNameElement = element.getChild("seedName"); Element seedUrlElement = element.getChild("seedUrl"); Element seedSortNameElement = element.getChild("sortName"); seed.setSeedName(seedNameElement.getTextTrim()); seed.setUrl(seedUrlElement.getTextTrim()); seed.setSortName(seedSortNameElement.getTextTrim()); Element parentSeedElement = element.getChild("parentSeed"); if (parentSeedElement != null) { Seed parentSeed = new Seed(); Element parentSeedNameElement = parentSeedElement.getChild("seedName"); Element parentSeedUrlElement = parentSeedElement.getChild("seedUrl"); Element parentSeedSortNameElement = parentSeedElement.getChild("sortName"); parentSeed.setSeedName(parentSeedNameElement.getText()); parentSeed.setUrl(parentSeedUrlElement.getTextTrim()); parentSeed.setSortName(parentSeedSortNameElement.getTextTrim()); } seedList.add(seed); } model.setSeeds(seedList); //获取匹配的要抽取的页面的特定部分内容 list = new ArrayList(); Element extractHtmlElement = root.getChild("extractHtml"); if (extractHtmlElement != null) { for (int i = 0; i < extractHtmlElement.getChildren().size(); i++) { Element element = (Element) extractHtmlElement.getChildren().get(i); list.add(element.getText()); } } model.setExtractHtmlReg(list); //获取匹配URLs list = new ArrayList(); Element fitUrlsElement = root.getChild("fitUrls"); for (int i = 0; i < fitUrlsElement.getChildren().size(); i++) { Element element = (Element) fitUrlsElement.getChildren().get(i); list.add(element.getText()); } model.setFitUrlRegs(list); //获取线程数量 Element workingThreadsElement = root.getChild("workingThreads"); String workingCount = workingThreadsElement.getText(); model.setWorkingThreads(Integer.valueOf(workingCount)); //获取解析编码 Element pageEncodingElement = root.getChild("pageEncoding"); String pageEncoding = pageEncodingElement.getText(); model.setPageEncoding(pageEncoding); //获取是否下载图片的标志 Element dwdPhoFlagElement = root.getChild("dwdPhoFlag"); String dphoFlag = dwdPhoFlagElement.getText(); model.setDwdPhoFlag(dphoFlag); //获取语言 Element orien_lanElement = root.getChild("orien_lan"); String orien = orien_lanElement.getText(); model.setOrigLanguage(orien); Element trans_lanElement = root.getChild("trans_lan"); String trans_lan = trans_lanElement.getText(); model.setTranLanguage(trans_lan); //获取URL正则匹配 Element pageUrlRegsElement = root.getChild("pageUrlRegs"); list = new ArrayList(); for (int i = 0; i < pageUrlRegsElement.getChildren().size(); i++) { Element element = (Element) pageUrlRegsElement.getChildren().get(i); list.add(element.getText()); } model.setPageReg(list); //获取余下的匹配规则 Map<String, List<String>> entityReg = new HashMap(); Element pathElements = root.getChild("pathElements"); for (int i = 0; i < pathElements.getChildren().size(); i++) { Element element = (Element) pathElements.getChildren().get(i); List<String> pathList = new ArrayList(); String mapName = element.getName(); for (int j = 0; j < element.getChildren().size(); j++) { Element childElement = (Element) element.getChildren().get(j); pathList.add(childElement.getText()); } entityReg.put(mapName, pathList); } model.setEntityReg(entityReg); } catch (JDOMException ex) { Logger.getLogger(XMLConfigWriter.class.getName()).log(Level.SEVERE, null, ex); } catch (IOException ex) { Logger.getLogger(XMLConfigWriter.class.getName()).log(Level.SEVERE, null, ex); } return model; } }
xml文件内容:
<?xml version="1.0" encoding="UTF-8"?> <website name="taobao_mall" url="http://www.tmall.com/?ver=2011b"> <taskName>caiji_tmall_精品男装_T恤</taskName> <seeds> <seed> <sortName>精品男装/T恤</sortName> <seedName>精品男装/T恤</seedName> <seedUrl>http://item.tmall.com/item.htm?id=9351702393</seedUrl> </seed> </seeds> <extractHtml> <path>div class="list item-view item-miniView"</path> </extractHtml> <fitUrls> <fit_url>http://www\.tmall\.com/go/act/tmall/iwanttobuy\.php.*</fit_url> <fit_url>http://list\.tmall\.com/.*</fit_url> <fit_url>http://item\.tmall\.com/item\.htm.*</fit_url> </fitUrls> <workingThreads>1</workingThreads> <pageEncoding>UTF-8</pageEncoding> <orien_lan>zh</orien_lan> <trans_lan>en</trans_lan> <pageUrlRegs> <pageUrl>http://www\.tmall\.com/go/act/tmall/iwanttobuy\.php.*</pageUrl> </pageUrlRegs> <pathElements> <commnents> <path>div class="tb-box tshop-psm tshop-psm-bdetailtabl" id="J_Detail"</path> <path>div id="reviews" class="J_DetailSection" data-reviewApi</path> </commnents> <shopAddr> <path>div class="clearfix tb-header-nav"</path> <path>div class="nav"</path> <path>a href</path> </shopAddr> <productDetail> <path>div id="attributes" class="attributes</path> <path>ul class="attributes-list</path> <path>li</path> </productDetail> <photosPath> <path>div class="tb-detail-bd tb-clear"</path> <path>div class="tb-gallery"</path> <path>div class="tb-booth tb-pic tb-s310"</path> <path>img id="J_ImgBooth" src</path> </photosPath> <category> <path>ul class="mallCrumbs-nav" id="J_crumbs"</path> <path>li class="mallCrumbs-nav-item"</path> </category> <countSold> <path>div class="tb-detail-bd tb-clear"</path> <path>ul class="tb-meta"</path> <path>li class="tb-sold-out tb-clear"</path> </countSold> <shopInfo> <path>div class="shop-intro"</path> <path>div class="extend"</path> <path>li</path> </shopInfo> <despPhos> <path>script</path> </despPhos> <thumbPhosPath> <path>div class="tb-detail-bd tb-clear"</path> <path>div class="tb-gallery"</path> <path>ul id="J_UlThumb" class="tb-thumb tb-clearfix"</path> <path>img src=</path> </thumbPhosPath> <productName> <path>div class="layout grid-s5m0 "</path> <path>div class="tb-detail-hd"</path> <path>a target="_blank" href=</path> </productName> <productPrice> <path>div class="tb-detail-bd tb-clear"</path> <path>ul class="tb-meta"</path> <path>li id="J_StrPriceModBox" class="tb-detail-price tb-clearfix"</path> </productPrice> </pathElements> </website>
相关推荐
通过TinyXML读写这些配置,可以实现用户界面的个性化定制。 "XMLREDWP"可能是一个错误或遗漏,没有明确的上下文,但通常情况下,"WP"可能指的是Windows Phone或WordPress等,如果与XML文件读写有关,可能是涉及特定...
XML(eXtensible Markup Language)是一种用于存储和传输数据的标准格式,广泛应用于Web服务、配置文件和数据交换等领域。本教程将通过一个具体的实例来介绍如何使用C#进行XML的操作。 首先,我们需要导入`System....
XML(eXtensible Markup Language)...总之,这个"xml文件读写demo"项目是一个学习和实践C#中XML操作的实用资源,涵盖了从基本的XML读写到高级的序列化技术,对于任何希望掌握XML处理的开发者来说都是宝贵的参考资料。
在IT行业中,XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,它的...通过`generate_xml.py`和`read_xml.py`这样的代码实例,开发者可以深入了解XML文件的读写操作,并在实际项目中灵活应用。
这些类允许我们创建一个解析器实例并解析XML文件到内存中的DOM树。 2. **遍历DOM树**:解析完成后,我们可以使用`Document`对象遍历整个DOM树。`getElementsByTagName`或`getElementsByTagnameNS`方法用于查找特定...
本篇将深入探讨如何在C#中进行XML的读写操作,包括增加、删除和修改XML文档内容。 首先,要了解XML的基本结构,XML文档由元素(Element)、属性(Attribute)、文本内容(Text Content)等组成。在C#中,我们主要...
C# XML文件读写操作源码,以及如何调用,注释详解,有任何问题请留言, 以下截取xml文件和部分调用代码段: * ++++++++++++++++++++++++++++++++++++++ <?xml version="1.0" encoding="utf-8" standalone="no"?&...
1. 创建XMLDocument对象:使用`Create Object`语句创建一个XMLDocument实例。 2. 加载XML文件:调用XMLDocument对象的`LoadXMLFile()`方法,传入XML文件的路径,将文件内容加载到对象中。 3. 查询XML数据:使用DOM...
本实例主要关注XML文件的读取,这对于处理数据交换、配置文件或者保存游戏进度等场景至关重要。下面将详细介绍XML文件读取的相关知识点。 首先,XML文件的结构是基于节点的,包括元素节点、属性节点、文本节点、...
本篇文章将详细阐述如何在C#中进行XML文件的读写操作,包括基本概念、常用API以及实例演示。 首先,我们需要了解XML的基本结构。XML是一种自描述的语言,通过元素(Element)、属性(Attribute)和值(Value)来...
本项目“java实现Xml文件读写”提供了一个完整的工程实例,包含了对XML文件进行添加、修改和读取的基本操作。 首先,要实现XML文件的读取,Java提供了`javax.xml.parsers`和`org.w3c.dom`这两个核心包。其中,`...
标题中的"VC 读写XML文件实例运用",意味着我们将探讨如何在VC++环境下,通过具体的代码实例实现XML文件的读取和写入。在描述中提到的两个工程启动文件——`.dsp`(Visual C++ 6的项目文件)和`.sln`(Visual Studio...
本实例中,我们将聚焦于`xml2js`库,它提供了将XML字符串转换为JavaScript对象以及反之的功能,非常适合读写XML文件。 首先,确保已经安装了`xml2js`库。在终端中运行以下命令: ```bash npm install xml2js ``` ...
本篇文章将深入探讨如何利用 Delphi 和 `TStringList` 进行 XML 文件的读写操作。 一、XML 文件的基本结构 XML 文件由一系列元素组成,每个元素由开始标签和结束标签包围,例如 `<element>` 和 `</element>`。元素...
本教程将深入探讨如何使用C#进行XML文件的读写操作,这对于初学者来说是一份重要的学习资料。 在C#中,读取XML文件主要通过System.Xml命名空间中的类来实现。最常用的类包括XmlDocument、XmlNodeReader和XDocument...
这是一个基于MFC的XML文档的读写封装类,利用了tinyXML的解析器进行解析,然后处理解析树,并将信息封装到了具体实例中,实现了对XML文档的读写操作。...如果对XML读写有疑惑可以下下来看一看~相信会有帮助
本篇文章将详细探讨XML文件的读写操作,包括解析XML文档、创建XML文档、修改XML节点以及保存XML到文件。 1. XML文件的解析: - DOM(Document Object Model)模型:DOM将整个XML文件加载到内存中,形成一个树形...
在IT行业中,XML文件的读写是常见的任务,尤其是在需要持久化对象或跨平台通信时。序列化是将对象转换为可存储或传输的形式的过程,而反序列化则是相反的过程,将数据恢复为原始对象。本篇文章将详细讲解如何使用...
在"实例118 如何读写XML文件"中,我们可以看到一个具体的代码示例,展示如何使用以上方法读取和写入XML文件。这个实例可能包括创建一个简单的XML文件,添加一些元素和属性,然后读取这些元素并打印它们的值,最后...