英雄会之蓝港在线:xml字符串文件解析之错在何方???
发布时间:2020-12-16 05:22:32 所属栏目:百科 来源:网络整理
导读:/** 题目详情 本题来自蓝港在线技术团队的idea,详情如下: XML-可扩展标记语言 ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言,被广泛的运用于数据传输和存储。请编写一段
/**
题目详情
挑战规则: */
import java.util.regex.Pattern; public class XMLparse{ public static String ParsingXML(String in) { String regEx_script = "<?xml[^>]*?>"; //去掉xml 版本说明 正则表达式 String regEx_style = "<|/";//去掉 < 或者 / 正则表达式 String regEx_xml ="</[^>]+>"; //去掉所有的结束标签 String regEx_gt = ">"; String xmlStr = in; //含xml标签的字符串 java.util.regex.Pattern p_script; java.util.regex.Matcher m_script; p_script = Pattern.compile(regEx_script,Pattern.CASE_INSENSITIVE); m_script = p_script.matcher(xmlStr); xmlStr = m_script.replaceAll(""); //过滤 xml 声明标签 p_script = Pattern.compile(regEx_xml,Pattern.CASE_INSENSITIVE); m_script = p_script.matcher(xmlStr); xmlStr = m_script.replaceAll(""); //过滤 所有的结束标签 例如 </span> p_script = Pattern.compile(regEx_style,Pattern.CASE_INSENSITIVE); m_script = p_script.matcher(xmlStr); xmlStr = m_script.replaceAll(""); //过滤 开始标签的 "<" 或者 但标记 标签的 "/" p_script = Pattern.compile(regEx_gt,Pattern.CASE_INSENSITIVE); m_script = p_script.matcher(xmlStr); xmlStr = m_script.replaceAll("n"); //过虑掉开始标签 ">" 然后 替换 一个N 实现换行 xmlStr= xmlStr.replaceAll("=",":"); return format(xmlStr) ; } public static String format(String in){ int count=0; String[] result =in.split("n"); StringBuffer text=new StringBuffer(result[0]); String[] attr=null; String str=""; for(int i=1;i<result.length;i++){ if(i%2!=0){ count++; text.append("nt"+" "+result[i]+" "+count); }else{ //将属性字符串进行切割 //可解析任意多个属性 attr=result[i].split(""");for(int t=0;t<attr.length;t++){ str+=attr[t].trim(); if(t%2!=0){ text.append("ntt"+str); str=""; } } } } return text.toString(); } //start 提示:自动阅卷起始唯一标识,请勿删除或增加。 public static void main(String args[]) { // 冤啊!!!!!!! //测试结果跟答案一样,为什么提交代码你们就说无法解析????? //到底是不是坑人啊你们??? ///你们要人家解析的那条xml 字符窜双引号是否已经转义?????? //如果没有的话还解析个屁呀!!!!坑人呀!!坑人呀!! String in= "<?xml version="1.0" ?><Books><Book>< age="1" Name ="The C++ Programming Language" Author="Bjarne Stroustrup" /></Book><Book><Name = "Effective C++" Author = "Scott Meyers"/></Book></Books>"; System.out.println(ParsingXML(in)); } //end //提示:自动阅卷结束唯一标识,请勿删除或增加。
} 测试结果如下: 明明解析出来了
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |