Tag: stax

无法将’org.springframework.batch.item.xml.StaxEventItemWriter’类型的值转换为必需的类型’org.springframework.batch.item.ItemReader’

我正在开发Spring Batch MongoDB to XML示例。 我已经成功创建了这个项目,但是当我运行它时,我看到下面的错误即将来临,我不知道这里出了什么问题。 参考错误 Exception in thread “main” org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘step1’: Initialization of bean failed; nested exception is org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type ‘org.springframework.batch.item.xml.StaxEventItemWriter’ to required type ‘org.springframework.batch.item.ItemReader’ for property ‘itemReader’; nested exception is java.lang.IllegalStateException: Cannot convert value of type ‘org.springframework.batch.item.xml.StaxEventItemWriter’ to required type ‘org.springframework.batch.item.ItemReader’ […]

使用Java StAX解析XML – 计算内容标记的数量

我有大的XML文件,我解析如下: public class Solution { private static final String ROOM_ID = “RoomID”; private static final String CONTENT = “Content”; private static final String LOGIN_NAME = “LoginName”; private static final String CONVERSATION_ID = “ConversationID”; private static final String FILE_DUMP = “FileDump”; private static final String MESSAGE = “Message”; private static final String CONVERSATION = “Conversation”; private […]

Android StAX游标解析器 – 找不到方法javax.xml.stream.XMLInputFactory.newInstance

我正在使用AsyncTask从i-net下载和解析XML内容。 下载和解析xml发生在doInBackground()方法中。 “dalvikvm”遇到了一个问题 – 它找不到方法。 这是LogCat的日志: 06-30 13:26:41.148: DEBUG/dalvikvm(507): GC freed 796 objects / 68088 bytes in 112ms 06-30 13:26:41.667: INFO/ActivityManager(52): Displayed activity com.news.reader/.SplashScreen: 5305 ms (total 63417 ms) 06-30 13:26:45.097: INFO/ActivityManager(52): Starting activity: Intent { cmp=com.news.reader/.DirBgNewsReader } 06-30 13:26:45.418: ERROR/dalvikvm(507): Could not find method javax.xml.stream.XMLInputFactory.newInstance, referenced from method com.news.reader.DirBgNewsReader.parse 06-30 13:26:45.427: WARN/dalvikvm(507): VFY: unable […]

为什么StAX创建XML比DOM慢?

我试图测量StAX和DOM创建两个相同文档所需的时间。 我不知道为什么DOM在创建XML方面更快。 也许我的StAX编写器代码不是很好。 所以这里是StAX(更长的代码) public static final int pocet =100000; try { String encoding = “UTF-8”; XMLOutputFactory f = XMLOutputFactory.newInstance(); XMLStreamWriter w = f.createXMLStreamWriter( new FileOutputStream(subor), encoding); w.writeStartDocument(encoding, “1.0”); w.writeCharacters(“\r\n”); w.writeStartElement(“Noviny”); for (int i = 1; i <= pocet; i++) { w.writeCharacters("\r\n "); w.writeStartElement("Autor"); w.writeCharacters("\r\n "); w.writeStartElement("Id"); String ID = Integer.toString(i); w.writeCharacters(ID); w.writeEndElement(); w.writeCharacters("\r\n "); […]

Java,XMLEvent位置字符

我正在使用StAX XMLEventReader解析以下String: final String xmlstr = “TheName”; 我正在观察event.getLocation().getCharacterOffset()值并得到一些奇怪的行为:虽然在元素声明之后的位置报告了START_ELEMENT的索引(例如,上下文元素的索引9),但是CHARACTERS事件为“据报道名称“在索引32上。为什么? 有没有办法纠正?

如何在StAX中跟踪解析大文件的进度?

我正在使用StAX API处理大型(1TB)XML文件。 假设我们有一个处理一些元素的循环: XMLInputFactory fac = XMLInputFactory.newInstance(); XMLStreamReader reader = fac.createXMLStreamReader(new FileReader(inputFile)); while (true) { if (reader.nextTag() == XMLStreamConstants.START_ELEMENT){ // handle contents } } 如何跟踪大型XML文件中的整体进度? 从读取器获取偏移量适用于较小的文件: int offset = reader.getLocation().getCharacterOffset(); 但作为整数偏移,它可能只适用于高达2GB的文件…

StAX – 从xml读取base64字符串到db

我正在使用StAX读取我的文件,其中包含一些Base64数据,并使用Hibernate将其保存到数据库中。 XML: lololencoded12 encodedlolos32 …………………………. 要读取和保存的代码: xmlif = (XMLInputFactory2) XMLInputFactory2.newInstance(); xmlif.setProperty(XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES, Boolean.FALSE); xmlif.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, Boolean.FALSE); xmlif.setProperty(XMLInputFactory.IS_COALESCING, Boolean.FALSE); xmlif.configureForLowMemUsage(); List entities = new ArrayList(); FileInputStream fis = new FileInputStream(filename); XMLStreamReader2 xmlr = (XMLStreamReader2) xmlif.createXMLStreamReader(filename, fis); int eventType = xmlr.getEventType(); String curElement = “”; while (xmlr.hasNext()) { eventType = xmlr.next(); switch (eventType) { case XMLEvent.START_ELEMENT: curElement=xmlr.getName().toString(); if (“base64”.equals(curElement)) […]

使用STaX解析多个XML片段

我希望以下内容可以在StAX中解析, 但是当你到达第二个元素时它会窒息。 因为没有共同的根元素。 (我不太清楚为什么拉解析器会关心这个特殊问题…无论如何…) 我可以伪造根元素,例如番石榴: InputSupplier join = CharStreams.join( newReaderSupplier(“”), newReaderSupplier(new File(“…”)), newReaderSupplier(“”)); XMLInputFactory xif = XMLInputFactory.newInstance(); XMLStreamReader xsr = xif.createXMLStreamReader(join.getInput()); xsr.nextTag(); // Skip the fake root 所以我的问题是:有没有办法避免这种黑客行为? 一些’片段’模式,我可以把解析器放入?

StAX XML两个必需标记之间的所有内容

开始学习StAX,使用XMLStreamReader,我遇到了一些问题。 如何将标签之间的所有内容作为文本? 我的意思是,我知道所需标签的名称,当我找到它时,我必须转到关闭标签,我发现它们之间的一切我必须附加一些字符串。 例如,我们有类似的东西 … Some text content and other tags here… Some text content.. … Something here … … … 所以,我需要把我的字符串作为 Some text content.. … Something here 我怎么才能得到它? 也许,我必须在源xml中找到所需块的开始和结束偏移,并在解析后给出子串?

用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