Tag: 解析

如何编写通用日志分析器

我们需要解析几个日志文件并对找到的日志条目运行一些统计信息(例如某些消息的出现次数,出现的峰值等)。 问题是编写一个日志解析器,它将处理几种日志格式,并允许我添加一个新的日志格式,只需要很少的工作。 为了让事情变得简单,我只关注基本上与此类似的日志: [11/17/11 14:07:14:030 EST] MyXmlParser E Premature end of file 所以每个日志条目将包含timestamp , originator (日志消息), level和日志message 。 一个重要的细节是消息可能有多行(例如堆栈跟踪)。 日志条目的另一个实例可能是: 17-11-2011 14:07:14 ERROR MyXmlParser – Premature end of file 我正在寻找一种指定日志格式的好方法,以及为它实现解析器的最适当的技术。 我虽然讲正则表达式,但我认为处理诸如多行消息(例如stacktrace)之类的情况会很棘手。 实际上,当我考虑多行消息的可能性时,为特定日志格式编写解析器的任务本身并不那么容易。 你如何解析这些文件? 理想情况下,我可以将此类内容指定为日志格式: [%TIMESTAMP] %ORIGIN %LEVEL %MESSAGE 要么 %TIMESTAMP %LEVEL %ORIGIN – %MESSAGE 显然,我必须为每个字段分配正确的转换器才能正确处理它(例如时间戳)。 谁能给我一些关于如何以健壮和模块化的方式实现它的好主意(我使用的是Java)?

Java使用XStream读取XML

我正在尝试使用XStream反序列化此XML文件,我收到此错误 Exception in thread “main” com.thoughtworks.xstream.converters.ConversionException: Authors : Authors —- Debugging information —- message : Authors cause-exception : com.thoughtworks.xstream.mapper.CannotResolveClassException cause-message : Authors class : java.util.ArrayList required-type : java.util.ArrayList converter-type : com.thoughtworks.xstream.converters.collections.CollectionConverter path : /ListOfDBook/DBook/Authors class[1] : com.test.books.ListOfDBook converter-type[1] : com.thoughtworks.xstream.converters.reflection.ReflectionConverter version : null ——————————- at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:79) at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65) at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66) at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:355) at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:306) at […]

对java HTML解析器/编辑器的建议

在尝试使用第三方HTML编辑器来执行(我希望)操作简单的问题后,我遇到了问题。 由于这些问题,我正在寻找可用于执行操作的替代HTML解析器的建议。 这是我的情况,我在我的html中有span标签(带有ID属性来识别它们),我只想根据客户端另一个区域的更新来替换它们的内容。 例如: Hello name you are age 我一直在尝试在javax.swing.text使用HTMLDocument类,如下所示: Element e; e = doc.getElement(document.getDefaultRootElement(), Attribute.ID, “1”); document.setInnerHTML(element, “John”); e = doc.getElement(document.getDefaultRootElement(), Attribute.ID, “2”); document.setInnerHTML(element, “99”); 但返回的元素是一个叶元素,不允许设置innerHTML。 不幸的是,文档,阅读器和解析器都是由第三方提供的,所以我无法真正修改它。 那么,我希望的是其他人遇到过类似的问题并且可以推荐一个替代库来做到这一点? 在此先感谢,B。

如何删除从Web服务返回的无法识别的字符?

我正在开发一个叫rest网络服务的应用程序。 有时,xml响应包含手机无法显示的字符。 显示这些字符时,会显示一个空框。 我想过滤掉这些字符。 如何检测字符是否能够在屏幕上显示? 一些特定字符包括: http://www.fileformat.info/info/unicode/char/0094/index.htm http://www.fileformat.info/info/unicode/char/0080/index.htm http://www.fileformat。信息/资讯/ Unicode的/炭/ 0092 / index.htm的

是否有一种简单的方法可以在不使用额外库的情况下解析Java中的JSON?

我是JavaScript和JSON的新手。 我正在编写一个需要将JSON解析为Java对象的Java servlet,但诀窍是我不能使用外部库,如json-simple或gson。 所以我已经将JavaScript文件的内容保存在名为“contents”的字符串中…… contents = “myVar = ” + contents + “;”; BufferedWriter bWriter = new BufferedWriter(new OutputStreamWriter(response.getOutputStream(), “UTF-8”)); ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName(“JavaScript”); Object returnVal = engine.eval(contents); NativeObject a = (sun.org.mozilla.javascript.internal.NativeObject) engine.get(“myVar”); Object[] ids = a.getAllIds(); for (Object id : ids) { String newId = (String) id; bWriter.write(“\n” + […]

在Eclipse JDT Java解析器中,是否可以逐节遍历AST节点而无需使用访问者?

通过Eclipse JDT API访问节点信息的标准方法是使用Visitor的模式。 例如: unit.accept(new MyVisitorAdapter() { @Override public void visit(MethodCallExpr node, Object arg) { System.out.println(“found method call: ” + node.toString()); } }, null); 在这种情况下,要访问节点,我需要指定我感兴趣的节点类型(针对此情况的MethodCallExpr )。 但是,为了继续以通用方式访问节点信息,我应该覆盖所有的visit()方法,可能枚举Eclipse JDT API中可用的每种节点。 这里可以找到完成它的完整示例。 在这种情况下,虽然不完全在Code Coverage的同一域中,但我希望能够控制Eclipse JDT Java Parser完成的遍历。 我想遍历AST节点,可能会通过所有节点,选择我想要的,但不限制类型,如上面的代码所示。 可能吗? 是否有通过Eclipse JDT API执行此操作的标准方法?

使用SAX进行XML解析| 如何处理特殊字符?

我们有一个JAVA应用程序,它从SAP提取数据,解析它并呈现给用户。 使用JCO连接器拉取数据。 最近我们被抛出一个例外: org.xml.sax.SAXParseException: Character reference “&#00” is an invalid XML character. 因此,我们计划在解析XML之前编写一个新的间接级别,其中替换所有特殊/非法字符。 我的问题是: 是否有任何现有的(开源)实用程序可以替换XML中的非法字符? 或者如果我必须编写这样的实用程序,我应该如何处理它们? 为什么抛出上述exception? 谢谢。

JAXB是否始终需要XSD

http://www.oracle.com/technetwork/articles/javase/index-140168.html#binsch – 本文说“ JAXB要求您要访问的XML文档具有架构 ” 这是一个Hello World示例,使用hello.xsd http://jaxb.java.net/tutorial/section_1_3-Hello-World.html#Hello%20World- 这是一个不使用任何xsd的Hello World示例。 http://www.mkyong.com/java/jaxb-hello-world-example/ 规范是否说JAXB在没有 xsd的情况下也可以工作,如果这是真的那么术语“绑定”的合理程度。 我相信通过绑定模式发生绑定。 Carification将会很有帮助。 谢谢

如何解析HTML并获得CSS样式

我需要解析HTML并找到相应的CSS样式。 我可以分别解析HTML和CSS,但我无法将它们组合起来。 例如,我有一个像这样的XHTML页面: Hello World 我必须搜索“hello world”并找到它的类名,然后我需要从外部CSS文件中找到它的样式。 使用Java,JavaScript和PHP的答案都可以。

布尔查询/表达式到Concrete语法树

我正在创建一个允许布尔表达式的搜索表单,例如:“foo AND bar”或“foo AND NOT bar”。 是否有PHP,Ruby或Java库可以将布尔表达式转换为具体的语法树? (我可以编写自己的词法分析器/解析器,但我宁愿使用经过试验和测试的东西) 编辑:澄清一下,我不解析心律失常的表达。 它将用于解析允许布尔运算符的全文查询。