Tag: xml parsing

是否有可用于Java(或PostgreSQL)的良好XML-to-Table?

我正在寻找类似的东西:XMLTABLE, http : //www.ibm.com/developerworks/data/library/techarticle/dm-0708nicola/ 在PostgreSQL中是否存在类似的东西,或者哪个最接近? 或者另一种方式,是否有可以实现此目的的Java库? 编辑: 感谢Erwin(他的评论中的答案几乎正是我所寻找的)。 但是,也许我可以建议对此进行扩展。 考虑一下,我们有一个xml文档,如: this is the first comment this is the second comment 虽然这是一个简单的例子,但也要考虑“comment”可能非常复杂。 我现在的问题是:使用XMLTable函数(或Erwin的实现),我们需要指定path_to_data即在这种情况下( /comment )。 但是,如果我希望我的返回模式类似于: [photo_id, comment_text] 。 无法从datanum的父元素中获取数据。 因此可以以某种方式修改您的代码来执行此操作吗? 我的猜测是有一些比xpath函数更复杂的东西,它本质上通过跟踪父代返回数据子集。 例如: this is the first comment this is the second comment 在这种情况下,我们可以访问“/comments/@photo_id” 。

从给定节点提取子节点数据

我想使用DOM4j在Java中解析xml文件。 我以此XML为例: Content-Type=application/xml booking created! 给定请求(第一个节点)节点,如何提取子节点数据? 例如,获取状态代码或名称属性?

SAXParseException XML-20221文本中的char无效

对于独立的Java应用程序,我们看到非常罕见的错误,其中包含有效XML内容的字符串导致JAXB抛出exception,例如: javax.xml.bind.UnmarshalException – with linked exception: [org.xml.sax.SAXParseException: : XML-20221: (Fatal Error) Invalid char in text.] 这是一个非常古老的Java应用程序,它是为旧版本的Java编写的,我们有一个现有的依赖项: com.oracle xdb-xmlparser 10.2.0.3.0 错误代码始终是XML-20221,但原因可能有所不同,例如: XML-20221: (Fatal Error) Invalid char in text. XML-20100: (Fatal Error) Expected ‘?>’.] XML-20121: (Fatal Error) End tag does not match start tag ‘TotalDepositReqd’. 堆栈跟踪的其余部分也会有所不同,但通常看起来像: at oracle.xml.parser.v2.XMLError.flushErrorHandler(XMLError.java:415) at oracle.xml.parser.v2.XMLError.flushErrors1(XMLError.java:284) at oracle.xml.parser.v2.NonValidatingParser.parseEndTag(NonValidatingParser.java:1359) at oracle.xml.parser.v2.NonValidatingParser.parseElement(NonValidatingParser.java:1304) at oracle.xml.parser.v2.NonValidatingParser.parseRootElement(NonValidatingParser.java:326) at […]

用Java转换StAX源代码

我有一些代码: XMLInputFactory xif = XMLInputFactory.newInstance() TransformerFactory tf = TransformerFactory.newInstance(“org.apache.xalan.processor.TransformerFactoryImpl”, null) Transformer t = tf.newTransformer() DOMResult result = new DOMResult() t.transform(new StAXSource(reader), result) 这会产生以下错误: 抓到:javax.xml.transform.TransformerException:无法转换类型为javax.xml.transform.stax.StAXSource的Source reader对象的类型为com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl

使用具有多个条件Java的XPath在特定标记内读取

– – – – kvarga 2013-11-30, 08:50 2013-11-30, 08:54:46 – NODE x:6.5cm y:10.5cm index:7 I WANT THIS PARA 1 kvarga 2013-11-30, 08:50 2013-11-30, 08:54:46 – NODE x:6.5cm y:10.5cm index:7 I WANT THIS PARA 2 Hye我想读取这个xml文件,需要获取标签内的文本,如下所示: 我一直在尝试使用我的代码获得结果: DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = null; try { builder = builderFactory.newDocumentBuilder(); org.w3c.dom.Document document = builder.parse( new FileInputStream(“c:\\y.xml”)); […]

如何使用Java和Xerces解析确认1.1规范的XML?

我正在尝试解析包含符合XML 1.1规范的 XML内容的String。 XML包含XML 1.0规范中不允许但在XML 1.1规范中允许的字符引用(字符引用转换为U + 0001-U + 001F范围内的Unicode字符)。 根据Xerces2网站, Xerces2解析器支持解析XML 1.1文档。 但是,我无法弄清楚如何告诉它我们试图解析的XML包含1.1兼容的XML。 我正在使用DocumentBuilder来解析XML(类似这样): public Element parseString(String xmlString) { try { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = dbf.newDocumentBuilder(); InputSource source = new InputSource(new StringReader(xmlString)); // Throws org.xml.sax.SAXParseException becuase of the invalid character refs Document doc = documentBuilder.parse(source); return doc.getDocumentElement(); } catch (ParserConfigurationException pce) […]

cvc-complex-type.2.4.c:匹配的通配符是strict,但是找不到元素’mvc:annotation-driven’的声明

我想这是一个xml解析问题,但我无法看到它在哪里。 我读了一些关于这个主题的文章并没有任何帮助: 我有这个spring的mvc配置: <!– was: –> 这就是tomcat所说的: org.xml.sax.SAXParseException; lineNumber: 23; columnNumber: 30; cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element ‘mvc:annotation-driven’. com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203) com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134) com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:437) com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368) com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:325) com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(XMLSchemaValidator.java:458) com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.reportSchemaError(XMLSchemaValidator.java:3237) com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java:1917) com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.emptyElement(XMLSchemaValidator.java:766) com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:356) com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2786) com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606) com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:117) com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510) com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848) com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777) com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:243) com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:348) org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:76) org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadDocument(XmlBeanDefinitionReader.java:428) org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390) org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:335) org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:303) org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180) org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:216) org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:187) org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125) […]

导入Xerces库时无法构建应用程序(退出值1)

当我在Xerces库中导入时,我似乎无法构建我的应用程序。 由于之前的问题,我已经在使用multidex,因此我知道这一切都已正确设置。 我花了几天时间在线查看并尝试各种版本的Xerces并调整到我的build.gradle但无法解决问题。 我已经尝试过清理重建,重新设置Android Studio /我的PC,使用jar直接编译,现在正式出于想法。 下面是我的build.gradle设置: android { compileSdkVersion 23 buildToolsVersion “23.0.2” defaultConfig { applicationId “#packageid#” minSdkVersion 18 targetSdkVersion 23 versionCode 1 versionName “0.8” multiDexEnabled true } buildTypes { debug { minifyEnabled false proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ } release { minifyEnabled true proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ } } } dependencies { // compile fileTree(include: [‘*.jar’], dir: […]

Java – XML解析器性能:Sun Java Streaming XML Parser(SJSXP)与Woodstox

我正在寻找最新的,内存效率和高性能的Java XML解析API。 我需要解析3 MB到5 MB的XML文件。 我对此进行了谷歌搜索并了解了Sun Java Streaming XML Parser(SJSXP),Woodstox比DOM和SAX快得多。 两者都使用StAX API。 *这些技术不支持架构validation。 Aalto XML处理器也实现了StAX API。 我没有找到关于这些技术的性能的具体发现。 哪一个在内存高效,高性能和易用性方面最佳?

Java从ZipInputStream条目创建InputStream

我想编写一个方法,从一个InputStream读取ZIP中的几个XML文件。 该方法将打开一个ZipInputStream,并在每个xml文件上获取相应的InputStream,并将其提供给我的XML解析器。 这是方法的骨架: private void readZip(InputStream is) throws IOException { ZipInputStream zis = new ZipInputStream(is); ZipEntry entry = zis.getNextEntry(); while (entry != null) { if (entry.getName().endsWith(“.xml”)) { // READ THE STREAM } entry = zis.getNextEntry(); } } 有问题的部分是“// READ THE STREAM”。 我有一个工作解决方案,它包括创建一个ByteArrayInputStream,并用它提供我的解析器。 但它使用缓冲区,对于大文件,我得到一个OutOfMemoryError。 这是代码,如果有人仍然感兴趣: int count; byte buffer[] = new byte[2048]; ByteArrayOutputStream out = new […]