精华内容
下载资源
问答
  • 我有一个xml文件,其内容中包含格式错误的HTML.由于xml无法解析html标签,例如< br>我已经使用CDATA进行保存和解析.我用过documentBuilder.setCoalescing(true);解析用于恢复数据 test< br> data< br&...

    我有一个xml文件,其内容中包含格式错误的HTML.

    由于xml无法解析html标签,例如< br>我已经使用CDATA进行保存和解析.

    我用过documentBuilder.setCoalescing(true);解析用于恢复数据 test< br> data< br>]]>没有CDATA标签..

    但是在optput标签被& lt;替换和& gt;分别 ..

    我期待结果中的这个字符串…


    test
    data

    在解析的字符串中.

    这该怎么做 ?任何的想法 ?

    提前致谢 !

    更新:我还有两个问题需要跟进..

    1.有没有办法通过代码将格式错误的HTML(例如< br>)制作成可解析的xml(例如< br>),如果是的话,它会处理& nbsp;还呢?

    2.是否有任何解决方案可以通过java将html文本转换为纯文本(例如< div> test& nbsp; text< / div> to test text)?

    解决方法:

    合并是一种操作,其中CDATA部分(节点)的内容被转换为文本节点并与相邻文本节点的内容合并.将CDATA部分转换为文本节点本身的这一要求将强加限制,即生成的文本节点由有效的XML字符组成.这将保留原始文档格式;换句话说,原始文档中节点的结构不会发生变化.

    产生的行为是5个预定义实体的行为 – ,&,“和’,前三个将被展开,因为它们未改变的存在将改变文档结构.

    简而言之,通过从DOM中提取值,您无法做您打算做的事情.解析文档后,您需要将值解码为您想要的值. Apache Commons Lang有一个实用程序类 – StringEscapeUtils that possesses the desired method.

    标签:java,parsing,xml,html,cdata

    来源: https://codeday.me/bug/20190621/1254425.html

    展开全文
  • 背景:通过接口访问数据,获取的内容是个标准的html格式,使用jsoup的方式获取页面元素值先推荐比较好的博客:http://www.open-open.com/jsoup/、 单个案例比较...使用(目前都是用的css方式定位元素)1.获取这个网页的...

    背景:通过接口访问数据,获取的内容是个标准的html格式,使用jsoup的方式获取页面元素值

    先推荐比较好的博客:http://www.open-open.com/jsoup/、 单个案例比较不错

    http://blog.csdn.net/u010814849/article/details/52526582  整合内容很多

    1.插件下载并安装

    2.使用(目前都是用的css方式定位元素)

    1.获取这个网页的商品标题内容

    09289e91bf7c80fa7fcf8080ff66fd54.png

    代码说明:response为页面的网页元素,一个标准的html

    Document doc = Jsoup.parse(resopnes); //使用jsoup 进行语言转换

    String getTitle = doc.select("#goods_title").attr("value");//商品标题 #使用css方式

    7efdb4b394ee96bf2291dcafe27ce6e6.png

    2. 获取静态页面的标题,元素input

    0d66ae4fdff15fac82f9c79088c5fd06.png

    可直接使用浏览器的css方式:#showtab0 > tbody > tr:nth-child(2) > td:nth-child(2) > input.input_style

    Document doc = Jsoup.parse(resopnes); // 使用jsoup 进行语言转换

    String getProductName = doc.select("#showtab0 > tbody > tr:nth-child(2) > td:nth-child(2) > input.input_style").attr("value");

    System.out.println("商品名称:"+getProductName);

    abc69ef430994c2fc8564b9b7f4b225a.png

    3.获取其他说明,元素为textarea

    bdfb3fa6bca28764930835a3b3c6f94c.png

    String detail = doc.select("#goods_desc_en").text();//详细描述

    System.out.println("详细描述"+detail);

    e58d2dea5fc3bf4689002bc25c051418.png

    展开全文
  • 背景:通过接口访问数据,获取的内容是个标准的html格式,使用jsoup的方式获取页面元素值先推荐比较好的博客:http://www.open-open.com/jsoup/、 单个案例比较...使用(目前都是用的css方式定位元素)1.获取这个网页的...

    背景:通过接口访问数据,获取的内容是个标准的html格式,使用jsoup的方式获取页面元素值

    先推荐比较好的博客:http://www.open-open.com/jsoup/、 单个案例比较不错

    http://blog.csdn.net/u010814849/article/details/52526582  整合内容很多

    1.插件下载并安装

    2.使用(目前都是用的css方式定位元素)

    1.获取这个网页的商品标题内容

    b7f1c124c368db10b15fb6d6603d1a10.png

    代码说明:response为页面的网页元素,一个标准的html

    Document doc = Jsoup.parse(resopnes); //使用jsoup 进行语言转换

    String getTitle = doc.select("#goods_title").attr("value");//商品标题 #使用css方式

    f2fa10f18baa9dec855876a61086c081.png

    2. 获取静态页面的标题,元素input

    e267b4ad9d51b001b86a791f990e153e.png

    可直接使用浏览器的css方式:#showtab0 > tbody > tr:nth-child(2) > td:nth-child(2) > input.input_style

    Document doc = Jsoup.parse(resopnes); // 使用jsoup 进行语言转换

    String getProductName = doc.select("#showtab0 > tbody > tr:nth-child(2) > td:nth-child(2) > input.input_style").attr("value");

    System.out.println("商品名称:"+getProductName);

    bc5651d43d3baa4005b35508001f60bd.png

    3.获取其他说明,元素为textarea

    b8509d74c686626f3c5f65d64bf0c283.png

    String detail = doc.select("#goods_desc_en").text();//详细描述

    System.out.println("详细描述"+detail);

    5b70f61b251e6f652e4966b0f7b08e99.png

    原文:http://www.cnblogs.com/chongyou/p/7478545.html

    展开全文
  • 发现QQ消息可以导出mht格式的消息,这种文件格式内部其实就是讲html、css、图片(图片是经过base64转换)按照一定规律全部写入到mht文件中的,只要按照规律解析即可。 在解析的过程中,如果是文件体积比较大,就...

    代码地址见本文最后。

    因为特殊原因,更换了通讯工具,需要将原聊天消息进行备份,并能进行浏览或者查询。

    发现QQ消息可以导出mht格式的消息,这种文件格式内部其实就是讲html、css、图片(图片是经过base64转换)按照一定规律全部写入到mht文件中的,只要按照规律解析即可。

    在解析的过程中,如果是文件体积比较大,就需要考虑进行分页,否则生成的html文件很大,我遇到解析后最大的单html文件达到了500M(导出全部消息),浏览起来很不方便,因此增加了分页功能。

    首先上效果:

    1.将程序放到mht文件所在文件夹。

    程序会自动查询当前文件夹的mht文件,并进行转换,最后将文件保存到mht同名的文件夹中。

    2.双击运行run.bat文件,可选分页。

    注意:在mht文件小于100M的情况下,即使选择了分页,程序不会也不会进行分页。

    3.预览效果


    部分代码解析:

    1.生成单文件html

    /**
         * 创建单文件html
         * @param inputFile
         * @param outputFilePath
         */
        public static void readAndCreateFile(String inputFile, String outputFilePath) {
            String htmlFileName = parseHtmlFileName(inputFile);
    
            File file = new File(inputFile);
            BufferedInputStream fis = null;
            BufferedReader reader = null;
            try {
                fis = new BufferedInputStream(new FileInputStream(file));
                reader = new BufferedReader(new InputStreamReader(fis,"utf-8"),5*1024*1024);
    
                boolean isCreatedHtml = false, isHtmlContent = false;
                String line = "";
                StringBuilder sb = null;
                //String [] resType = null;
                String resName = null;
                //boolean isGetResType = false;
                boolean isGetResName = false;
                StringBuilder resSb = new StringBuilder();
                while((line = reader.readLine()) != null){
                    if(!isCreatedHtml) {
                        if (isHtmlStartTag(line)) {
                            isHtmlContent = true;
                            sb = new StringBuilder(line).append("\n");
                        }else{
                            if(isHtmlContent) {
                                if (isHtmlEndTag(line)) {
                                    sb.append(line).append("\n");
                                    createHtmlFile(outputFilePath, htmlFileName, sb.toString(), 0, true);
                                    sb.delete(0, sb.length());
                                    isCreatedHtml = true;
                                } else {
                                    sb.append(line).append("\n");
                                }
                            }
                        }
                    }
    
                    /**
                     * 开始解析资源文件
                     */
                    if(isCreatedHtml) {
                        /*if(!isGetResType) {
                            resType = parseResourceType(line);
                            if (resType != null) {
                                isGetResType = true;
                                continue;
                            }
                        }*/
                        if(!isGetResName) {
                            resName = parseResourceName(line);
                            if (resName != null) {
                                isGetResName = true;
                                resSb.delete(0, resSb.length());
                                continue;
                            }
                        }
                        if(isGetResName) {
                            if(line.length() > 0) {
                                if(line.contains("------=_NextPart_")) {
                                    //isGetResType = false;
                                    isGetResName = false;
                                    generateImage(resSb.toString(), (outputFilePath + File.separator + htmlFileName), resName);
                                }else{
                                    resSb.append(line).append("\n");
                                }
                            }
                        }
                    }
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    if(reader != null) {
                        reader.close();
                    }
                    if(fis != null) {
                        fis.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    2.生成分页html

    /**
         * 创建分页html
         * @param inputFile
         * @param outputFilePath
         */
        public static void readAndCreateMultFile(String inputFile, String outputFilePath) {
            String htmlFileName = parseHtmlFileName(inputFile);
    
            File file = new File(inputFile);
            BufferedInputStream fis = null;
            BufferedReader reader = null;
            try {
                fis = new BufferedInputStream(new FileInputStream(file));
                reader = new BufferedReader(new InputStreamReader(fis,"utf-8"),5*1024*1024);
    
                boolean isCreatedHtml = false, isTableContent = false;
                String line = "";
                StringBuilder sb = null;
                int trLine = 1;
                int htmlNo = 1;
                //String [] resType = null;
                String resName = null;
                //boolean isGetResType = false;
                boolean isGetResName = false;
                StringBuilder resSb = new StringBuilder();
                while((line = reader.readLine()) != null){
                    if(!isCreatedHtml) {
                        Matcher startMatcher = tableStartPattern.matcher(line);
                        if (startMatcher.find()) {
                            isTableContent = true;
                            /**
                             * 将table后面的内容拼接起来
                             */
                            sb = new StringBuilder(line.substring(startMatcher.end())).append("\n");
                        }else{
                            if(isTableContent) {
                                trLine++;
                                Matcher endMacher = tableEndPattern.matcher(line);
                                if (endMacher.find()) {
                                    sb.append(line.substring(0, endMacher.start()));
                                    createHtmlFile(outputFilePath, htmlFileName, sb.toString(), htmlNo, true);
                                    isCreatedHtml = true;
                                } else {
                                    sb.append(line).append("\n");
                                    if(trLine % 1000 == 0) {
                                        createHtmlFile(outputFilePath, htmlFileName, sb.toString(), htmlNo, false);
                                        htmlNo ++;
                                        sb.delete(0, sb.length());
                                    }
                                }
                            }
                        }
                    }
    
                    /**
                     * 开始解析资源文件
                     */
                    if(isCreatedHtml) {
                        /*if(!isGetResType) {
                            resType = parseResourceType(line);
                            if (resType != null) {
                                isGetResType = true;
                                continue;
                            }
                        }*/
                        if(!isGetResName) {
                            resName = parseResourceName(line);
                            if (resName != null) {
                                isGetResName = true;
                                resSb.delete(0, resSb.length());
                                continue;
                            }
                        }
                        if(isGetResName) {
                            if(line.length() > 0) {
                                if(line.contains("------=_NextPart_")) {
                                    //isGetResType = false;
                                    isGetResName = false;
                                    generateImage(resSb.toString(), (outputFilePath + File.separator + htmlFileName), resName);
                                }else{
                                    resSb.append(line).append("\n");
                                }
                            }
                        }
                    }
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    if(reader != null) {
                        reader.close();
                    }
                    if(fis != null) {
                        fis.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    注意:

    1.考虑到性能问题,分页生成的时候,只做了上一页、下一页,因为个人已经觉得这个够用了,并没有开发页码的功能,读者可对这个进行扩展,思路大概是:将mht中的html部分读取到,主要是table中的tr部分,然后将这些逐条读取到并放入list,然后根据list进行分页。

    2.读者在转换之后,还是请保留您的原始mht文件,虽然功能经过测试,也对数据进行了一定量的验证,但是不保证在转换的过程中可能因bug或未知因素导致数据丢失,因此,请保留原始mht文件,请保留原始mht文件,请保留原始mht文件!

    3.花了一点时间开发的,并未对代码进行优化,可能有些地方有部分重复代码,读者请自行优化。

    4.测试过6G和10G左右的文件,更大的文件暂时未测试。

    后续:

    后续如果有空闲时间,可能会做一定的改进,使用Lucene相关技术,对生成的html进行索引并支持搜索,方便搜索消息。

    代码地址:

    https://github.com/itriders/mht2html

     

    展开全文
  • 背景:通过接口访问数据,获取的内容是个标准的html格式,使用jsoup的方式获取页面元素值先推荐比较好的博客:http://www.open-open.com/jsoup/、 单个案例比较...使用(目前都是用的css方式定位元素)1.获取这个网页的...
  • 主要功能: 1. 从一个URL,文件或字符串中解析HTML;...1、来自用户输入,一个文件或一个网站的HTML字符串,你可能需要对它进行解析并取其内容,或校验其格式是否完整: 静态Jsoup.parse(String html...
  • 解码: 使用什么样的编码格式解析页面的内容 4.标签上可以添加属性 属性可以帮助更完整的展示标签 属性=""|‘属性值’ 双引号和单引号都可以,但是前后保持一致 属性前面要条件空格 5.标签: 单标签|自闭合标签: 双标签...
  • 数据解析

    2016-04-28 12:55:00
    前端:请求(iOS/安卓(JAVA)PC(浏览器(HTML/CSS/JS))) :OC/JAVA/HTML/CSS/JS 后端:响应(服务器开发:php/java/.net) 前端和后端交互的"数据格式": XML/JSON 数据解析. XML/"JSON" ----> OC 客户端发送请求给...
  • 利用java读取xml节点数据

    千次阅读 2012-03-13 18:35:43
    显示可以用css或者 xsl设置数据的显示...利用java对xml文件进行解析 用到的类 DocumentBuilderFactory xml解析器工具 DocumentBuilder文档解析器 Document文档类 NodeList节点类 package me.dom.test; im
  • 显示可以用css或者 xsl设置数据的显示格式利用java对xml文件进行解析 用到的类 DocumentBuilderFactory xml解析器工具 DocumentBuilder文档解析器 Document文档类 NodeList节点类package me.dom.test;import javax.x...
  • 数据解析小记

    2019-09-23 01:38:43
    前端:请求(iOS(OC)/安卓(JAVA) PC(浏览器(HTML/CSS/JS))) :OC/JAVA/HTML/CSS/JS 后端:响应(服务器开发:php/java/.net) 前端和后端交互的"数据格式": XML JSON 数据解析. XML/"JSON"----> OC 客户端发送请求给...
  • 显示可以用css或者 xsl设置数据的显示格式利用java对xml文件进行解析 用到的类 DocumentBuilderFactory xml解析器工具 DocumentBuilder文档解析器 Document文档类 NodeList节点类package me.dom.test;import javax.x...
  • 我目前正在使用Cobra:Java HTML Renderer&解析器呈现基于Java...一旦选择了多个项目,它们的书面描述将被动态生成并格式化为包含css2和html4标签,并加载到Cobra HTMLPanel中进行显示.我希望在HTMLPanel中显示...
  • java开源包1

    千次下载 热门讨论 2013-06-28 09:14:34
    Blister是一个用于操作苹果二进制PList文件格式Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
  • java开源包12

    热门讨论 2013-06-28 10:14:45
    Blister是一个用于操作苹果二进制PList文件格式Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
  • Java资源包01

    2016-08-31 09:16:25
    Blister是一个用于操作苹果二进制PList文件格式Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
  • java开源包101

    2016-07-13 10:11:08
    Blister是一个用于操作苹果二进制PList文件格式Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
  • java开源包11

    热门讨论 2013-06-28 10:10:38
    Blister是一个用于操作苹果二进制PList文件格式Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
  • java开源包2

    热门讨论 2013-06-28 09:17:39
    Blister是一个用于操作苹果二进制PList文件格式Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
  • java开源包3

    热门讨论 2013-06-28 09:20:52
    Blister是一个用于操作苹果二进制PList文件格式Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
  • java开源包6

    热门讨论 2013-06-28 09:48:32
    Blister是一个用于操作苹果二进制PList文件格式Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
  • java开源包5

    热门讨论 2013-06-28 09:38:46
    Blister是一个用于操作苹果二进制PList文件格式Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
  • java开源包10

    热门讨论 2013-06-28 10:06:40
    Blister是一个用于操作苹果二进制PList文件格式Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
  • java开源包4

    热门讨论 2013-06-28 09:26:54
    Blister是一个用于操作苹果二进制PList文件格式Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
  • java开源包8

    热门讨论 2013-06-28 09:55:26
    Blister是一个用于操作苹果二进制PList文件格式Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
  • java开源包9

    热门讨论 2013-06-28 09:58:55
    Blister是一个用于操作苹果二进制PList文件格式Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
  • java开源包7

    热门讨论 2013-06-28 09:52:16
    Blister是一个用于操作苹果二进制PList文件格式Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
  • java 渲染解读

    2020-08-11 10:07:43
    java 渲染解读 解读 就是把tomcat把jsp编译成...渲染:baiHTML语言用浏览器解析,首先将.html文件加载进内存du,生成一颗DOM树,然后根据标记中zhi引用的.js和.css文件,来dao对节点进行渲染 生成一个完整,绚丽的

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 126
精华内容 50
关键字:

java解析css格式

java 订阅