gpt4 book ai didi

java - XML 验证。打开的文件太多

转载 作者:数据小太阳 更新时间:2023-10-29 03:01:03 27 4
gpt4 key购买 nike

我编写了一个程序来验证文件夹中存在的所有 xml 并报告失败的。我在我的程序中使用了 java XML validator 实用程序。

SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(new File("xsdPath"));

我有一个循环验证的 xml 文件列表

for (int i = 0; i < list.size(); i++) {
String returnValue = validateXML(list.get(i));
...
}

然后我有一个验证 XML 的函数

public static String validateXML(String xmlPath){
try {
validator = schema.newValidator();
validator.validate(new StreamSource(new File(xmlPath)));
} catch (IOException e) {
...
}

如果超过系统设置的最大文件数限制,上述函数会返回太多打开的文件错误。

如果我使用 ulimit -n 3000 更改 linux 参数,那么它工作正常。我想知道我们是否可以使用不同的方式来验证 Java 代码本身中的 XML,这样我就不需要更改系统参数。

最佳答案

您可能希望跟踪底层的 InputStream,以便在完成后关闭它:

public static String validateXML(String xmlPath){

BufferedInputStream xmlStream = null;
try {
validator = schema.newValidator();
xmlStream=new BufferedInputStream(new FileInputStream(xmlPath));
Source src=new StreamSource(xmlStream);
validator.validate(src);
} catch (IOException e) {

// do something
}
finally{

if(xmlStream != null){

try{
xmlStream.close();
}
catch(Exception e){

// error while closing
}
}

}
}

关于java - XML 验证。打开的文件太多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37323900/

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