gpt4 book ai didi

java - 使用 SAX 解析器拆分 XML

转载 作者:行者123 更新时间:2023-11-30 07:03:26 26 4
gpt4 key购买 nike

我有以下 xml 文件。

<Engineers>
<Engineer>
<Name>JOHN</Name>
<Position>STL</Position>
<Team>SS</Team>
</Engineer>
<Engineer>
<Name>UDAY</Name>
<Position>TL</Position>
<Team>SG</Team>
</Engineer>
<Engineer>
<Name>INDRA</Name>
<Position>Director</Position>
<Team>PP</Team>
</Engineer>
</Engineers>

当 Xpath 被指定为 Engineers/Enginner 时,我需要将此 xml 拆分为更小的 xml 字符串。

较小的 xml 字符串如下

<Engineers>
<Engineer>
<Name>INDRA</Name>
<Position>Director</Position>
<Team>PP</Team>
</Engineer>
</Engineers>

<Engineers>
<Engineer>
<Name>JOHN</Name>
<Position>STL</Position>
<Team>SS</Team>
</Engineer>
</Engineers>

到目前为止,我已经使用 SAX 实现了以下功能,我们可以获取 XML 中的元素,但不是我想要的。我该如何继续?

public class ReadSAX
{
public static void main( String[] args )
{
try {

SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();

DefaultHandler handler = new DefaultHandler() {

public void startElement(String uri, String localName,
String qName, Attributes attributes)
throws SAXException {

System.out.println("Start Element :" + qName);



public void endElement(String uri, String localName,
String qName)
throws SAXException {

System.out.println("End Element :" + qName);

}

public void characters(char ch[], int start, int length)
throws SAXException {

System.out.println(new String(ch, start, length));


}

};

File file = new File("c:\\file.xml");
InputStream inputStream= new FileInputStream(file);
Reader reader = new InputStreamReader(inputStream,"UTF-8");

InputSource is = new InputSource(reader);
is.setEncoding("UTF-8");

saxParser.parse(is, handler);


} catch (Exception e) {
e.printStackTrace();
}

}
}

最佳答案

为什么要使用如此低级的编码方法?

在 XSLT 2.0 中,这很简单

<xsl:template match="/">
<xsl:for-each select="Engineers/Engineer">
<xsl:result-document select="{position()}.xml">
<Engineers>
<xsl:copy-of select="."/>
</Engineers>
</xsl:result-document>
</xsl:for-each>
</xsl:template>

如果这需要太多内存,请使用流式 XSLT 3.0 处理器来解决问题。

关于java - 使用 SAX 解析器拆分 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40511547/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com