gpt4 book ai didi

java - 将任何文件类型解析为 XML

转载 作者:行者123 更新时间:2023-11-30 04:24:49 25 4
gpt4 key购买 nike

我在 Gradle 脚本中有以下代码片段(语法是 Groovy/Java 的组合):

File file = new File(filename) // Filename is being read from console
def content = file.getText()
Document document = DOMBuilder.parse(new StringReader(content), false, false)

问题是,我正在尝试解析一个 XML 文件,但带有 xconf扩展名(例如 file.xconf )。由于某种原因,当我尝试上面的代码时,我收到以下错误消息(在控制台中):

java.io.FileNotFoundException: <full_path>/file.dtd (No such file or directory)

路径是正确的,但我注意到扩展名突然更改为 .dtd 。我注意到文件中引用了 .dtd该文件的版本,但我希望解析器忽略它(并停止验证,这就是 DOMBuilder.parse() 的第二个参数为 false 的原因)。我可以更改此行为以便能够成功解析文件吗?

注意:如果可能的话,我还希望能够对(任何)其他文件扩展名执行相同的操作。

提前致谢!

最佳答案

试试这个:

import groovy.xml.*
import org.w3c.dom.Document;
import org.xml.sax.InputSource;

Document parseWithoutDTD( Reader r, boolean validating=false, boolean namespaceAware=true ) {
FactorySupport.createDocumentBuilderFactory().with { f ->
f.namespaceAware = namespaceAware
f.validating = validating
f.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
f.newDocumentBuilder().with { db ->
db.parse( new InputSource( r ) )
}
}
}

Document d = new File( filename ).withReader { r ->
parseWithoutDTD( r )
}

关于java - 将任何文件类型解析为 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16209890/

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