Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 为STAX解析器设置过滤器_Xml_Stax - Fatal编程技术网

Xml 为STAX解析器设置过滤器

Xml 为STAX解析器设置过滤器,xml,stax,Xml,Stax,我正在尝试仅基于特定标记拆分大型XML文件(部门) 下面是我正在使用的xml enter code here <?xml version="1.0" encoding="UTF-8"?> <Students> <student> <name>Student1</name> <id>470230</id> </student> <student> <name&g

我正在尝试仅基于特定标记拆分大型XML文件(部门) 下面是我正在使用的xml

enter code here
<?xml version="1.0" encoding="UTF-8"?>
<Students>
<student>
    <name>Student1</name>
    <id>470230</id>
</student>
<student>
    <name>Student2</name>
    <id>25142</id>
</student>
<student>
    <name>Student3</name>
    <id>55624</id>
</student>
<Department>
    <name>Engineering</name>
    <id>2251</id>
</Department>
<Department>
    <name>Science</name>
    <id>3356</id>
</Department>
<Department>
    <name>Commerce</name>
    <id>2546</id>
</Department>
</Students>
有人能纠正我只根据部门标记分割xml文件吗? 当前与STAX解析器一起使用的代码,文件大小超过100 MB
目前,我正在获取所有学生和系的输出,但我正在尝试仅获取系。

是否要将系转储到单个文件中?否。我要创建系的单个XML文件,但当前代码也正在生成学生XML文件。因此,您需要仅包含系节点的XML文件。正确的?注意,您想从上面的xml文件中筛选出节点元素。是。这是正确的,我只是希望这些部门节点作为单独的文件仍然不明确。。。您希望每个部门节点都作为一个文件。。。还是将所有部门合并为一个文件?
import java.io.File;
import java.io.FileReader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamReader;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stax.StAXSource;
import javax.xml.transform.stream.StreamResult;

public class stax1 {

    public static void main(String[] args) throws Exception  {
        int i=1;
        XMLInputFactory xif = XMLInputFactory.newInstance();
        XMLStreamReader xsr = xif.createXMLStreamReader(new FileReader("D:/Temp/test.txt"));
        xsr.nextTag(); // Advance to statements element

        TransformerFactory tf = TransformerFactory.newInstance();
        Transformer t = tf.newTransformer();
        while(xsr.nextTag() == XMLStreamConstants.START_ELEMENT) {
            File file = new File("out/" + "out" +i+ ".xml");
            t.transform(new StAXSource(xsr), new StreamResult(file));
            i++;
        }
    }
}