Tag: jaxp

validation失败后移动文件(Java)

我们正在validationXML文件,根据validation结果,我们必须将文件移动到不同的文件夹中。 当XML有效时,validation器返回一个值,我们可以毫无问题地移动文件。 当XML根据模式无效时,也会发生同样的事情。 但是,如果XML格式不正确,validation器会抛出exception,当我们尝试移动文件时,它会失败。 我们相信在某个地方仍然有一个句柄可以保存文件。 我们尝试在移动文件之前放置System.gc()并对问题进行排序,但我们不能将System.gc()作为解决方案。 代码看起来像这样。 我们有一个File对象,我们从中创建一个StreamSource。 然后将StreamSource传递给validation器。 当XML格式不正确时,它会抛出SAXException。 在exception处理中,我们使用.renameTo()方法来移动文件。 sc = new StreamSource(xmlFile); validator.validate(sc); 我们尝试过捕获 validator.reset(); validator=null; sc=null; 但仍然.renameTo()无法移动文件。 如果我们将System.gc()放入catch中,那么移动将成功。 有人可以告诉我如何在没有System.gc()?情况下对其进行排序System.gc()? 我们使用JAXP和saxon-9.1.0.8作为解析器。 非常感谢

我需要解析非格式良好的xml数据(HTML)

我在JAVA中有一些格式不正确的xml(HTML)数据,我使用了JAXP Dom,但它抱怨道。 问题是:有没有办法使用JAXP来解析这些文件? 我有一个包含以下数据的文件:

JavaBu+中的DocumentBuilderFactory是否是线程安全的?

javax.xml.parsers.DocumentBuilderFactory的Java 1.4 doc毫不含糊地说明: DocumentBuilderFactory类的实现不保证是线程安全的。 用户应用程序要确保从多个线程中使用DocumentBuilderFactory。 或者,应用程序可以为每个线程提供一个DocumentBuilderFactory实例。 应用程序可以使用工厂的同一实例来获取DocumentBuilder的一个或多个实例,前提是工厂实例一次不在多个线程中使用。 然而, Java 5和Java 6文档并没有说明这种情况。 DocumentBuilderFactory现在是线程安全的,还是Sun刚刚决定警告是否过度,人们应该知道更好?

XMLSchema的解决方法不支持maxOccurs大于5000

我的问题是解析一个XSD Schema,它包含maxOccurs大于5000(但不是unbounded )的元素。 这实际上是Xerces(我正在使用的版本2.9.1)或JAXP中的一个已知问题,如下所述: http ://bugs.sun.com/view_bug.do;jsessionid=85335466c2c1fc52f0245d20b2e?bug_id= 4990915 我已经知道,如果我将XSD中的maxOccurs数字从大于5000的数字更改为unbounded一切正常。 遗憾的是,在我的情况下这不是一个选项 (我不能插入XSD文件)。 我的问题是: 有人知道Xerces中有关此问题的其他一些解决方法吗? 要么 有人可以推荐另一个没有此限制的XML解析器吗? 谢谢!

差异SAXParserFactory XMLReaderFactory。 哪一个选择?

它们似乎都有相同的目的(创建一个XMLReader)。 一些教程包含一个,另一个包含。 的SAXParserFactory: http://docs.oracle.com/javase/7/docs/api/javax/xml/parsers/SAXParserFactory.html 似乎更可配置 更多的锅炉板代码 官方支持api 示例代码: // SAXParserFactory SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = factory.newSAXParser(); XMLReader reader = parser.getXMLReader(); reader.parse(new InputSource(“document.xml”)); XMLReaderFactory: http://docs.oracle.com/javase/7/docs/api/org/xml/sax/helpers/XMLReaderFactory.html 两行代码少 不太可配置 社区支持,没有保证 示例代码: // XMLReaderFactory XMLReader xmlReader = XMLReaderFactory.createXMLReader(); xmlReader.parse(new InputSource(“document.xml”)); 题: 这些是主要的差异还是有一些我已经监督过。 你应该选择哪一个?

MessageFactory的jaxp对象缓存

可以重用javax.xml.soap.MessageFactory吗? 即 msgFactory = MessageFactory.newInstance(); 我可以缓存msgFactory并根据需要重用它来创建新的SOAPMessages吗? 还应该是msgFactory.createMessage(); 如果可以在代码中重用msgFactory,可以同步吗? 更新: 同样在单线程代码中,我可以存储msgFactory来反复创建SOAPMessages,以免每次都创建一个MessageFactory的新实例谢谢

使用Padding进行XSL左右对齐

XSLT 1.0中是否有任何可用的标准模板可以进行调整并将字段填充到最大长度? 谢谢,Prabhjot

Java(JAXP)XML解析DocumentBuilder的差异

两者之间有什么区别吗? DocumentBuilder.parse(InputStream)和 DocumentBuilder.parse(InputSource) ? 我只能发现,对于第一种情况,解析器检测流中的编码,因此它更安全,而后者我不确定是否需要设置编码。 我应该知道的任何其他要点(例如表演)?

如何使用RELAX NG模式和JAXPvalidationXML文档?

我想使用RELAX NG schematavalidationXML文档,我想使用JAXPvalidationAPI 。 从谷歌搜索,似乎我可以使用Jing和ISO RELAX JARV到JAXP Bridge 。 不幸的是,在将两者都添加到我的类路径后,我无法让它工作。 SchemaFactory只是在尝试实例化工厂时抛出IllegalArgumentException – 我在SchemaFactory查看,显然SchemaFactoryFinder返回null结果。 所以我很欣赏这两个问题的答案: 我怎么能和Jing和这座桥一起工作呢? 我应该尝试一套更好/不同的库吗? 我需要这个来使用Java 5和Java 6。 谢谢!

Java和XML(JAXP) – 缓存和线程安全怎么样?

在使用Java API进行XML处理时,我想知道哪些对象可以重用 (在相同或不同的文档中),JAXP: DocumentBuilderFactory DocumentBuilder XPath Node ErrorHandler (编辑:我忘了这必须在我自己的代码中实现,抱歉) 是建议缓存这些对象还是JAXP实现已经缓存它们? 这些对象的(重新)使用是否是线程安全的 ?