gpt4 book ai didi

java - 均匀分割 xml 文件时遇到问题

转载 作者:行者123 更新时间:2023-12-02 10:38:55 24 4
gpt4 key购买 nike

我无法根据元素计数将大型 xml 文件拆分为更小的文件。我从上一个问题中找到了一些代码,这些代码可用于按标签拆分,但似乎无法按元素计数拆分文件。将元素计数设置为 100 后,将创建一个文件。如果增加计数,文件的大小会增加,但不会创建多个文件来容纳整个原始 xml 文件。

public class Splitter {
private static void appendStuff(String content, File file) throws IOException {
FileWriter fw = new FileWriter(file.getAbsoluteFile(),true);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(content);
bw.close();
}

public static void main(String[] s) throws Exception {
String prefix = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "\n";
String suffix = "\n</RCStatus>\n";
int count = 0;
try {

int i = 1;
XMLInputFactory xif = XMLInputFactory.newInstance();
XMLStreamReader xsr = xif.createXMLStreamReader(new FileReader("Carriers.xml"));
xsr.nextTag(); // Advance to statements element

TransformerFactory tf = TransformerFactory.newInstance();
Transformer t = tf.newTransformer();

File file = new File("\\Desktop\\xml\\" + "status" + i + ".xml");
FileOutputStream fos = new FileOutputStream(file, true);
appendStuff("<RCStatus>", file);
while (xsr.nextTag() == XMLStreamConstants.START_ELEMENT) {
count++;
t.transform(new StAXSource(xsr), new StreamResult(fos));
if(count == 100) {
count = 0;
i++;
appendStuff("</RCStatus>", file);
fos.close();
file = new File("\\Desktop\\xml\\" + "status" + i +".xml");
fos = new FileOutputStream(file, true);
appendStuff("<RCStatus>", file);
}

}

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

<RCStatus> 
<H>
<T>a</T>
<A>E</A>
<V>12</V>
<R>S</R>
</H>
<C>
<Co>I</Co>
<RM>5</RM>
<Ta/>
<MC>xx</MC>
<DOT>1</DOT>
<A1>xxx</1>
<A2 />
<Cy>x</Cy>
<St>I</St>
<Z>x</Z>
<Ct>xx</Ct>
<T>VP</T>
<P>x</P>
<F>xxx</F>
<E>x</E>
<Pa />
<PaA />
<PaC />
<PaSt />
<PaZ />
<Cl = />
<iISN />
<iISS />
<Ds />
<Pay2 />
<PC />
<C>U</C>
<IF />
</C>
</RCStatus>

最佳答案

XML 文件是表示树结构的平面文件。

XML 文件中的树结构不需要平衡,因此主要问题是“不平衡树的均匀分割是什么”?

为了说明这一点,您的树有一个顶级元素 RCStatus 和两个同级元素 HC。如果我在同级之间均匀地分割树,我将得到一个较小的文件(包含 H 同级文件)和一个较大的文件(包含 C 的文件) > sibling )。

也许这就是我们想要的。也许不是。

第二种方法是“包含相同数量的叶元素”,那么文件只会大致相等,因为两个文件的父元素的结构可能不同,从而导致大小变化。

因此,我认为您需要更好地表达拆分的含义,因为将 XML 文件从字面上切成两半会使其成为无效的非 XML 文件。

关于java - 均匀分割 xml 文件时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53071600/

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