标签: stax

使用STaX将xml转换为另一个xml需要花费大量时间

我正在使用以下代码将大型xml流转换为另一个流:

 import java.io.ByteArrayInputStream;
 import java.io.InputStreamReader;
 import java.io.OutputStreamWriter;
 import java.io.PrintWriter;
 import java.io.Writer;
 import javax.xml.stream.XMLEventReader;
 import javax.xml.stream.XMLEventWriter;
 import javax.xml.stream.XMLInputFactory;
 import javax.xml.stream.XMLOutputFactory;
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
 import javax.xml.stream.events.XMLEvent;
 import javax.xml.transform.Result;
 import javax.xml.transform.Source;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.stax.StAXResult;
 import javax.xml.transform.stax.StAXSource;

 public class TryMe 
 {
   public static void main (final String[] args)
   {
    XMLInputFactory inputFactory = null;
    XMLEventReader eventReaderXSL = null;
    XMLEventReader eventReaderXML = null;
    XMLOutputFactory outputFactory = null;
    XMLEventWriter eventWriter = null;
    Source XSL = null;
    Source XML = null;
    inputFactory = XMLInputFactory.newInstance(); …
Run Code Online (Sandbox Code Playgroud)

java xml xslt stax

2
推荐指数
1
解决办法
1万
查看次数

如何使用StAX将属性添加到XML节点?

我需要在XML文件中生成具有以下结构的节点:

<node attribute0="value0" attribute1="value1" > </node>
Run Code Online (Sandbox Code Playgroud)

我怎么能在StAX中做到这一点?

编辑1:我正在尝试Lars Vogel教程(http://www.vogella.de/articles/JavaXML/article.html)中"3.4.编写XML文件 - 示例"一节中的代码

java xml stax

2
推荐指数
1
解决办法
4796
查看次数

如何使用 Java 和 Stax 从 Xml 中删除元素及其子元素

我有一个包含这样数据的大文件

<releases>
   <release>
   ......
      <companies>
         <company>
         </company>
      </companies>
   </release>
   <release>
   ......
</releases>
Run Code Online (Sandbox Code Playgroud)

我想生成和输出与输入文件相同的文件,但删除了所有公司元素及其子元素。我正在尝试使用 Stax,我认为它遍历元素,然后如果我得到匹配,我可以只是不写该元素,该部分将被删除。即,如果我扔掉导致其中的元素并被删除的元素,但它似乎只是删除了元素本身而不是其他任何东西,对吗?

IE

<releases>
   <release>
   ......
   </release>
   <release>
   ......
</releases>
Run Code Online (Sandbox Code Playgroud)

这是我目前拥有的代码:

        XMLInputFactory  inputFactory = XMLInputFactory.newInstance();
        XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
        InputStream in = new FileInputStream(source);
        XMLEventReader reader = inputFactory.createXMLEventReader(in);

        OutputStream out = new FileOutputStream(target);
        XMLEventWriter writer =  outputFactory.createXMLEventWriter(out);
        XMLEvent event;
        while(reader.hasNext()){
            event = reader.nextEvent();
            writer.add(event);
            if(event.getEventType() == XMLStreamConstants.START_ELEMENT)
            {
                if(event.asStartElement().getName().toString().equalsIgnoreCase("companies"))
                {
                    System.out.println("Deleting:"+event);
                    continue;
                }
                else
                {
                    writer.add(event);
                }
            }
            else
            {
                writer.add(event);
            } 
        }
Run Code Online (Sandbox Code Playgroud)

java xml stax

2
推荐指数
1
解决办法
2954
查看次数

如何使用XMLStreamReader读取xml中的命名空间?

我有一个xml文件,我使用XMLStreamReader对象从中读取.所以我会保持简单:

我们来看看这个xml示例:

<mySample xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" attribute1="value1"/>
Run Code Online (Sandbox Code Playgroud)

所以我需要的是获取值(作为字符串)"xmlns:xsi"并获取值(也作为字符串)" http://www.w3.org/2001/XMLSchema-instance "

我确实试过这样的测试:

if (reader.getEventType() != XMLStreamConstants.NAMESPACE){
       attributeName = reader.getAttributeLocalName(i);
       attributeValue = reader.getAttributeValue(i);
}
else{
       attributeName = reader.getNamespacePrefix(i) + reader.getNamespaceURI(i);
       attributeValue = reader.getAttributeValue(i);
}
Run Code Online (Sandbox Code Playgroud)

但它没有用.

显然我错过了这个API的新手,所以任何帮助都会非常受欢迎.

java xml stax xmlstreamreader

2
推荐指数
1
解决办法
4027
查看次数

JAVA get attributes value from xml using stax parser

I'm working on a project that read RSS feed using java, I use this tutorial they using Stax parser.My question is how I can read attributes values ?

http://www.vogella.com/tutorials/RSSFeed/article.html

This is the RSSReader class,

package de.vogella.rss.read;

import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;

import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.Characters;
import javax.xml.stream.events.XMLEvent;

import de.vogella.rss.model.Feed;
import de.vogella.rss.model.FeedMessage;

public class RSSFeedParser {
    static final String TITLE = "title";
    static final String DESCRIPTION = "description";
    static final String CHANNEL = "channel"; …
Run Code Online (Sandbox Code Playgroud)

java xml rss stax

2
推荐指数
1
解决办法
6361
查看次数

woodstox和sjsxp之间的比较

有没有人使用过Woodstox的Stax实现http://woodstox.codehaus.org和sjsxp https://sjsxp.dev.java.net/.我遇到了一个奇怪的问题,sjsxp XmlStreamReader没有读取完整的文本值,并尝试了woodstox解决了我之前的问题.

我想和你们确认一下之前是否有人使用过woodstox,经验是什么.

java stax woodstox

1
推荐指数
1
解决办法
891
查看次数

为什么Maven2在每个版本中都检查stax-ex的更新?

Maven2在每次构建时都检查stax-ex的更新。它只是检查此单个依赖项,所有其他依赖项每天仅更新一次。

Maven2的输出:

工件org.jvnet.staxex:stax-ex:从java.net检查更新

stax-ex(组标识:org.jvnet.staxex,版本:1.2)作为jaxws-rt(组标识:com.sun.xml.ws,版本:2.1.3)的一部分包括在内。我们有一个人工仓库作为中介。

我能做什么?(离线构建将是不受欢迎的解决方法。)

stax maven-2 artifactory

1
推荐指数
1
解决办法
3865
查看次数

使用 StAX 读取所有文本元素

我需要解析一个 xml 文件,无论其中的标签如何,并读取其所有叶子的文本(仅限文本元素)。我正在使用 StAX,但似乎无法提前知道元素是否仅为文本(因此 getElementText 为 not leave 元素引发异常)。所以我决定使用过滤器,只过滤标签元素,并以这种方式迭代抛出文档:

InputStream in = null;
    try {
        in = new FileInputStream("file.xml");
        DatiEstratti de = DatiEstratti.getInstance();

        // Processamento ad eventi
        XMLInputFactory factory = (XMLInputFactory) XMLInputFactory.newInstance();

        XMLEventReader eventReader = factory.createXMLEventReader(in);
        // usa il filtro per filtrare solo i tag element
        eventReader = factory.createFilteredReader(eventReader, new ElementOnlyFilter());

        while (eventReader.hasNext()) {

            XMLEvent event = eventReader.nextEvent();

            if (event.getEventType() == XMLStreamConstants.START_ELEMENT) {
                StartElement startElement = event.asStartElement();

                XMLEvent peekEvent = eventReader.peek();
                if(peekEvent.isEndElement()){
                    // questa è la prima volta che viene …
Run Code Online (Sandbox Code Playgroud)

java xml stax xml-parsing

1
推荐指数
1
解决办法
6393
查看次数

STAX XMLStreamWriter 不写小文件

我有一个使用STAX的小程序,它将 XML 文件的内容复制到另一个文件。顺便说一下,我发现了XMLStreamWriter 的一个神秘问题。

当我尝试写很多元素时,写作是有效的。但是当我尝试编写几个元素时,它不起作用(文件为空)。

例如,此代码有效(3000 个元素):

    XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
    XMLStreamWriter writer = outputFactory.createXMLStreamWriter(new FileOutputStream("toto.xml"));

    writer.writeStartDocument();
    for(int i = 0; i < 3000; ++i) {
        writer.writeStartElement("toto");
        writer.writeEndElement();
    }
    writer.writeEndDocument();
Run Code Online (Sandbox Code Playgroud)

并且此代码不起作用(50 个元素):

    XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
    XMLStreamWriter writer = outputFactory.createXMLStreamWriter(new FileOutputStream("toto.xml"));

    writer.writeStartDocument();
    for(int i = 0; i < 50; ++i) {
        writer.writeStartElement("toto");
        writer.writeEndElement();
    }
    writer.writeEndDocument();
Run Code Online (Sandbox Code Playgroud)

你有什么想法吗?

java xml stax

1
推荐指数
1
解决办法
586
查看次数

Apache POI和XMLConstants冲突

org.apache.poi poi-ooxml依赖项添加到我的项目后,我现在收到以下错误:

javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI无法解析或不是字段

当我尝试查看源代码时,不再有代码,eclipse正在寻找源代码:.m2/repository/stax/stax-api/1.0.1/stax-api-1.0.1-sources.jar

java stax apache-poi maven javax

1
推荐指数
1
解决办法
841
查看次数