Java 为值解析html内容

Java 为值解析html内容,java,Java,调用后,我收到一个Http响应作为Html字符串,我想刮取ReportViewer1变量中存储的特定值 <html> .................... ........... <script type="text/javascript"> var ReportViewer1 = new ReportViewer('ReportViewer1', 'ReportViewer1_ReportToo

调用后,我收到一个Http响应作为Html字符串,我想刮取
ReportViewer1
变量中存储的特定值

  <html>

   ....................
    ...........
<script type="text/javascript">
                var ReportViewer1 = new ReportViewer('ReportViewer1', 'ReportViewer1_ReportToolbar', 'ReportViewer1_ReportArea_WaitControl', 'ReportViewer1_ReportArea_ReportCell', 'ReportViewer1_ReportArea_PreviewFrame', 'ReportViewer1_ParametersAreaCell', 'ReportViewer1_ReportArea_ErrorControl', 'ReportViewer1_ReportArea_ErrorLabel', 'ReportViewer1_CP', '/app/Telerik.ReportViewer.axd', 'a90a0d41efa6429eadfefa42fc529de1', 'Percent', '100', '', 'ReportViewer1_EditorPlaceholder', 'ReportViewer1_CalendarFrame', 'ReportViewer1_ReportArea_DocumentMapCell', {
                    CurrentPageToolTip: 'STR_TELERIK_MSG_CUR_PAGE_TOOL_TIP',
                    ExportButtonText: 'Export',
                    ExportToolTip: 'Export',
                    ExportSelectFormatText: 'Export to the selected format',
                    FirstPageToolTip: 'First page',
                    LabelOf: 'of',
                    LastPageToolTip: 'Last Page',
                    ProcessingReportMessage: 'Generating report...',
                    NoPageToDisplay: 'No page to display.',
                    NextPageToolTip: 'Next page',
                    ParametersToolTip: 'Click to close parameters area|Click to open parameters area',
                    DocumentMapToolTip: 'Hide document map|Show document map',
                    PreviousPageToolTip: 'Previous page',
                    TogglePageLayoutToolTip: 'Switch to interactive view|Switch to print preview',
                    SessionHasExpiredError: 'Session has expired.',
                    SessionHasExpiredMessage: 'Please, refresh the page.',
                    PrintToolTip: 'Print',
                    RefreshToolTip: 'Refresh',
                    NavigateBackToolTip: 'Navigate back',
                    NavigateForwardToolTip: 'Navigate forward',
                    ReportParametersSelectAllText: '<select all>',
                    ReportParametersSelectAValueText: '<select a value>',
                    ReportParametersInvalidValueText: 'Invalid value.',
                    ReportParametersNoValueText: 'Value required.',
                    ReportParametersNullText: 'NULL',
                    ReportParametersPreviewButtonText: 'Preview',
                    ReportParametersFalseValueLabel: 'False',
                    ReportParametersInputDataError: 'Missing or invalid parameter value. Please input valid data for all parameters.',
                    ReportParametersTrueValueLabel: 'True',
                    MissingReportSource: 'The source of the report definition has not been specified.',
                    ZoomToPageWidth: 'Page Width',
                    ZoomToWholePage: 'Full Page'
                }, 'ReportViewer1_ReportArea_ReportArea', 'ReportViewer1_ReportArea_SplitterCell', 'ReportViewer1_ReportArea_DocumentMapCell', true, true, 'PDF', 'ReportViewer1_RSID', true);
            </script>

  ...................
  ...................
</html>

使用Java解析此值的最佳方法是什么?

我会像读取大多数文件一样一次读取一行文本。因为格式总是相同的,所以您可以查找以字符“var ReportViewer1”开头的行。然后您就知道找到了所需的行。您可能需要去除一些空白,尽管它也将始终使用相同的空白进行格式化(具体取决于您)

有了行后,使用String.split()方法将该行拆分为数组。有很好的分隔符可以分割。。。“,”或“或”,“。。。再次,看看什么最适合你

测试“/app/Telerik.ReportViewer.axd”的拆分行部件。。。拆分数组的下一个成员将是您要查找的值

同样,格式将始终相同,因此您可以依靠它来查找变量。当然,研究html文本以确保它在您正在调查的行中始终遵循相同的格式,但是看看它,我认为它可能会遵循相同的格式


再次,找到你的线路。。。在分隔符上拆分它。。。并使用一些逻辑在拆分行部分中查找您要查找的元素。

使用字符串类解析HTML

public class HtmlParser {

    public static void main(String args[]){
        String result = getValuesProp(html);
        System.out.println("Result: "+ result);
    }

    static String PIVOT = "Telerik.ReportViewer.axd";

    public static String getValuesProp(String json) {
        String subString;

        int i = json.indexOf(PIVOT);
        i+= PIVOT.length();
        //', chars
        i+=2;
        subString = json.substring(i);

        i = subString.indexOf("'");
        i++;
        subString = subString.substring(i);
        i = subString.indexOf("'");
        subString = subString.substring(0,i);
        return subString;
    }

    static String html ="<html>\n" +
            "\n" +
            "<script type=\"text/javascript\">\n" +
            "                var ReportViewer1 = new ReportViewer('ReportViewer1', 'ReportViewer1_ReportToolbar', 'ReportViewer1_ReportArea_WaitControl', 'ReportViewer1_ReportArea_ReportCell', 'ReportViewer1_ReportArea_PreviewFrame', 'ReportViewer1_ParametersAreaCell', 'ReportViewer1_ReportArea_ErrorControl', 'ReportViewer1_ReportArea_ErrorLabel', 'ReportViewer1_CP', '/app/Telerik.ReportViewer.axd', 'a90a0d41efa6429eadfefa42fc529de1', 'Percent', '100', '', 'ReportViewer1_EditorPlaceholder', 'ReportViewer1_CalendarFrame', 'ReportViewer1_ReportArea_DocumentMapCell', {\n" +
            "                    CurrentPageToolTip: 'STR_TELERIK_MSG_CUR_PAGE_TOOL_TIP',\n" +
            "                    ExportButtonText: 'Export',\n" +
            "                    ExportToolTip: 'Export',\n" +
            "                    ExportSelectFormatText: 'Export to the selected format',\n" +
            "                    FirstPageToolTip: 'First page',\n" +
            "                    LabelOf: 'of',\n" +
            "                    LastPageToolTip: 'Last Page',\n" +
            "                    ProcessingReportMessage: 'Generating report...',\n" +
            "                    NoPageToDisplay: 'No page to display.',\n" +
            "                    NextPageToolTip: 'Next page',\n" +
            "                    ParametersToolTip: 'Click to close parameters area|Click to open parameters area',\n" +
            "                    DocumentMapToolTip: 'Hide document map|Show document map',\n" +
            "                    PreviousPageToolTip: 'Previous page',\n" +
            "                    TogglePageLayoutToolTip: 'Switch to interactive view|Switch to print preview',\n" +
            "                    SessionHasExpiredError: 'Session has expired.',\n" +
            "                    SessionHasExpiredMessage: 'Please, refresh the page.',\n" +
            "                    PrintToolTip: 'Print',\n" +
            "                    RefreshToolTip: 'Refresh',\n" +
            "                    NavigateBackToolTip: 'Navigate back',\n" +
            "                    NavigateForwardToolTip: 'Navigate forward',\n" +
            "                    ReportParametersSelectAllText: '<select all>',\n" +
            "                    ReportParametersSelectAValueText: '<select a value>',\n" +
            "                    ReportParametersInvalidValueText: 'Invalid value.',\n" +
            "                    ReportParametersNoValueText: 'Value required.',\n" +
            "                    ReportParametersNullText: 'NULL',\n" +
            "                    ReportParametersPreviewButtonText: 'Preview',\n" +
            "                    ReportParametersFalseValueLabel: 'False',\n" +
            "                    ReportParametersInputDataError: 'Missing or invalid parameter value. Please input valid data for all parameters.',\n" +
            "                    ReportParametersTrueValueLabel: 'True',\n" +
            "                    MissingReportSource: 'The source of the report definition has not been specified.',\n" +
            "                    ZoomToPageWidth: 'Page Width',\n" +
            "                    ZoomToWholePage: 'Full Page'\n" +
            "                }, 'ReportViewer1_ReportArea_ReportArea', 'ReportViewer1_ReportArea_SplitterCell', 'ReportViewer1_ReportArea_DocumentMapCell', true, true, 'PDF', 'ReportViewer1_RSID', true);\n" +
            "            </script>\n" +
            "\n" +
            "</html>";

}
公共类HTMLPasser{
公共静态void main(字符串参数[]){
字符串结果=GetValuesPro(html);
System.out.println(“结果:+Result”);
}
静态字符串PIVOT=“Telerik.ReportViewer.axd”;
公共静态字符串GetValuesPro(字符串json){
字符串子串;
inti=json.indexOf(PIVOT);
i+=PIVOT.length();
//”“查理
i+=2;
subString=json.subString(i);
i=子字符串。indexOf(“”);
i++;
子串=子串。子串(i);
i=子字符串。indexOf(“”);
子字符串=子字符串。子字符串(0,i);
返回子串;
}
静态字符串html=“\n”+
“\n”+
“\n”+
“var ReportViewer1=新的ReportViewer(‘ReportViewer1’、‘ReportViewer1_ReportToolbar’、‘ReportViewer1_ReportArea_WaitControl’、‘ReportViewer1_ReportArea_ReportCell’、‘ReportViewer1_ReportArea_PreviewFrame’、‘ReportViewer1_ReportArea_ErrorControl’、‘ReportViewer1_ReportArea_ErrorLabel’、‘ReportViewer1_CP’、‘/app/Telerik.ReportViewer.axd’、‘a90a0d41efA6429EADFAF42FC529DE1、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、+
“当前页面工具提示:'STR\u TELERIK\u MSG\u CUR\u PAGE\u TOOL\u TIP',\n”+
ExportButtonText:'导出',\n+
ExportToolTip:'导出',\n+
ExportSelectFormatText:'导出为所选格式',\n+
FirstPageToolTip:'第一页',\n+
LabelOf:'of',\n+
LastPageToolTip:'最后一页',\n+
正在处理ReportMessage:'正在生成报告…',\n+
NoPageToDisplay:'没有要显示的页面',\n+
“NextPagetToolTip:'下一页',\n”+
“ParametersToOptip:'单击以关闭参数区域|单击以打开参数区域',\n”+
DocumentMapToolTip:'隐藏文档映射|显示文档映射',\n+
“PreviousPageToolTip:'上一页',\n”+
“TogglePageLayoutToolTip:'切换到交互式视图|切换到打印预览',\n”+
SessionHasExpiredError:'会话已过期',\n+
SessionHasExpiredMessage:'请刷新页面',\n+
打印工具提示:“打印”,\n+
刷新工具提示:“刷新”,\n+
NavigateBackToolTip:'向后导航',\n+
NavigateForward工具提示:“向前导航”,\n+
“报告参数SelectAllText:”“\n”+
ReportParametersSelectAValueText:“”,\n+
ReportParametersInvalidValueText:'无效值',\n+
ReportParametersNoValueText:'需要值',\n+
ReportParametersAllText:'NULL',\n+
ReportParametersPreviewButtonText:“预览”,\n+
ReportParametersFalseValueLabel:'False',\n+
ReportParametersInputDataError:'缺少参数值或参数值无效。请为所有参数输入有效数据。',\n+
ReportParametersTrueValueLabel:'True',\n+
MissingReportSource:'尚未指定报告定义的源。',\n+
ZoomToPageWidth:'页面宽度',\n+
ZoomToWholePage:'整页'\n+
“},'ReportViewer1_ReportArea_ReportArea_ReportArea','ReportViewer1_ReportArea_SplitterCell','ReportViewer1_ReportArea_DocumentMapCell',true,true,true,'PDF','ReportViewer1_RSID',true);\n”+
“\n”+
“\n”+
"";
}

如果您只是想摆脱
a90a0d41efa6429eadfefa42fc529de1
,那么您可以使用字符串。replace(
,'a90a0d41efa6429eadfafa2fc529de1“
,”)命令。LOL我正在尝试提取此变量:)您在问题中说了“scrap”,所以我不确定您想用它做什么。
public class HtmlParser {

    public static void main(String args[]){
        String result = getValuesProp(html);
        System.out.println("Result: "+ result);
    }

    static String PIVOT = "Telerik.ReportViewer.axd";

    public static String getValuesProp(String json) {
        String subString;

        int i = json.indexOf(PIVOT);
        i+= PIVOT.length();
        //', chars
        i+=2;
        subString = json.substring(i);

        i = subString.indexOf("'");
        i++;
        subString = subString.substring(i);
        i = subString.indexOf("'");
        subString = subString.substring(0,i);
        return subString;
    }

    static String html ="<html>\n" +
            "\n" +
            "<script type=\"text/javascript\">\n" +
            "                var ReportViewer1 = new ReportViewer('ReportViewer1', 'ReportViewer1_ReportToolbar', 'ReportViewer1_ReportArea_WaitControl', 'ReportViewer1_ReportArea_ReportCell', 'ReportViewer1_ReportArea_PreviewFrame', 'ReportViewer1_ParametersAreaCell', 'ReportViewer1_ReportArea_ErrorControl', 'ReportViewer1_ReportArea_ErrorLabel', 'ReportViewer1_CP', '/app/Telerik.ReportViewer.axd', 'a90a0d41efa6429eadfefa42fc529de1', 'Percent', '100', '', 'ReportViewer1_EditorPlaceholder', 'ReportViewer1_CalendarFrame', 'ReportViewer1_ReportArea_DocumentMapCell', {\n" +
            "                    CurrentPageToolTip: 'STR_TELERIK_MSG_CUR_PAGE_TOOL_TIP',\n" +
            "                    ExportButtonText: 'Export',\n" +
            "                    ExportToolTip: 'Export',\n" +
            "                    ExportSelectFormatText: 'Export to the selected format',\n" +
            "                    FirstPageToolTip: 'First page',\n" +
            "                    LabelOf: 'of',\n" +
            "                    LastPageToolTip: 'Last Page',\n" +
            "                    ProcessingReportMessage: 'Generating report...',\n" +
            "                    NoPageToDisplay: 'No page to display.',\n" +
            "                    NextPageToolTip: 'Next page',\n" +
            "                    ParametersToolTip: 'Click to close parameters area|Click to open parameters area',\n" +
            "                    DocumentMapToolTip: 'Hide document map|Show document map',\n" +
            "                    PreviousPageToolTip: 'Previous page',\n" +
            "                    TogglePageLayoutToolTip: 'Switch to interactive view|Switch to print preview',\n" +
            "                    SessionHasExpiredError: 'Session has expired.',\n" +
            "                    SessionHasExpiredMessage: 'Please, refresh the page.',\n" +
            "                    PrintToolTip: 'Print',\n" +
            "                    RefreshToolTip: 'Refresh',\n" +
            "                    NavigateBackToolTip: 'Navigate back',\n" +
            "                    NavigateForwardToolTip: 'Navigate forward',\n" +
            "                    ReportParametersSelectAllText: '<select all>',\n" +
            "                    ReportParametersSelectAValueText: '<select a value>',\n" +
            "                    ReportParametersInvalidValueText: 'Invalid value.',\n" +
            "                    ReportParametersNoValueText: 'Value required.',\n" +
            "                    ReportParametersNullText: 'NULL',\n" +
            "                    ReportParametersPreviewButtonText: 'Preview',\n" +
            "                    ReportParametersFalseValueLabel: 'False',\n" +
            "                    ReportParametersInputDataError: 'Missing or invalid parameter value. Please input valid data for all parameters.',\n" +
            "                    ReportParametersTrueValueLabel: 'True',\n" +
            "                    MissingReportSource: 'The source of the report definition has not been specified.',\n" +
            "                    ZoomToPageWidth: 'Page Width',\n" +
            "                    ZoomToWholePage: 'Full Page'\n" +
            "                }, 'ReportViewer1_ReportArea_ReportArea', 'ReportViewer1_ReportArea_SplitterCell', 'ReportViewer1_ReportArea_DocumentMapCell', true, true, 'PDF', 'ReportViewer1_RSID', true);\n" +
            "            </script>\n" +
            "\n" +
            "</html>";

}