- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在使用 XOM xml 库解析文件时如何忽略 DTD 声明。我的文件有以下行:
<?xml version="1.0"?>
<!DOCTYPE BlastOutput PUBLIC "-//NCBI//NCBI BlastOutput/EN" "NCBI_BlastOutput.dtd">
//rest of stuff here
当我尝试 build() 我的文档时,我得到了 DTD 文件的 filenotfound 异常。我知道我没有这个文件,也不关心它,那么在使用 XOM 时如何删除它?
这是一个代码片段:
public BlastXMLParser(String filePath) {
Builder b = new Builder(false);
//not a good idea to have exception-throwing code in constructor
try {
_document = b.build(filePath);
} catch (ParsingException ex) {
Logger.getLogger(BlastXMLParser.class.getName()).log(Level.SEVERE,"err", ex);
} catch (IOException ex) {
//
}
private Elements getBlastReads() {
Element root = _document.getRootElement();
Elements rootChildren = root.getChildElements();
for (int i = 0; i < rootChildren.size(); i++) {
Element child = rootChildren.get(i);
if (child.getLocalName().equals("BlastOutput_iterations")) {
return child.getChildElements();
}
}
return null;
}
}
我在这一行得到一个 NullPointerException:
Element root = _document.getRootElement();
从源 XML 文件中删除 DTD 行后,我可以成功解析它,但这不是最终生产系统中的一个选项。
最佳答案
首选解决方案是实现 EntityResolver拦截对 DTD 的请求并将这些请求重定向到嵌入式副本。如果你
您可以通过设置相应的 SAX 功能来禁用 DTD 的提取。在 XOM 中,这应该可以通过传递 XMLReader 来实现。像这样的 Builder 构造函数:
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLReaderFactory;
...
XMLReader xmlreader = XMLReaderFactory.createXMLReader();
xmlreader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
Builder builder = new Builder(xmlreader);
关于java - 解析 XML 时忽略 DTD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8081214/
是否可以在我的 DTD 中声明一个可以有任何名称的元素?到目前为止,我了解到 ANY 只能用于以下数据类型: 任何帮助将不胜感激。 --阿里 最佳答案 不,ANY 关键字仅适用于元素的类别。无论如何
我得到了以下 DTD: 有人问我: This DTD is recursive! How does the recursion end? 嗯……我不明白为什么要递归?唯一递归的接缝
是否可以在另一个 DTD 中包含一个 DTD? (我的意思不是将第二个 DTD 复制并粘贴到第一个 DTD 中。我的意思是在第一个 DTD 中有一个指向第二个 DTD 的指针。) 最佳答案 是的,这是
我知道我应该将所有 html 元素放在 body 标签中,但我需要将两个隐藏的输入放在 html dtd 之上。我猜它不会使我的 html 文件成为标准文件,但有那么糟糕吗?我有以下代码。 什么
在输入文档中没有 any 文档类型的情况下,如何在解析文档时强制 SAX 解析器(特别是 Java 中的 Xerces)使用 DTD?这可能吗? 以下是我的场景的更多详细信息: 我们有一堆符合相同 D
我正在尝试通过 .dtd 验证 xml 文件。我写了这个验证器: public bool Validation(XmlDocument xmlDoc) { var xm
我有一个处理 HTTP 请求的网络服务。它收到的文档有一个嵌入的 DOCTYPE,指定了一个 .dtd 文件。我希望使用更新的 XML 架构验证文件,以便在更新的设备连接到我的服务时使用。 我可以成功
我在弄清楚 HXT 为何要替换我的 DTD 时遇到了一些麻烦。首先,这是我要解析的输入文件: foo foo 这是我得到的输出: foo
我能否定义一个 DTD,使其中的元素具有在外部 DTD 中定义的结构?我的意思是类似于以下内容(这是一个我知道在某些方面无效的示例,但希望它能让您了解我在寻找什么): 此处的尝试是表示消息
如何使用外部 DTD 文件来验证我的 XML 文件? DTD 将位于某些 url 上,例如http://localhost/example.dtd 并且 DTD 未在 XML 文件中引用,因此我需要在
以下声明出现在 html 4.01 dtds 中 (参见 http://www.w3.org/TR/REC-html40/sgml/dtd.html 在 strict.dtd 和 loose.dtd
我想知道是否有一个程序可以读取 DTD 规范,使用规范创建表单或控制台提示,使用表单/提示获取用户输入的数据,然后根据输入的数据编写 XML 文档. 有这样的程序吗? 例如,想象一下: [开始想象]
我想使用 JAXB 从 dtd 文件生成 Java 类。 dtd 看起来像这样: 使
我正在尝试对 xhtml 文档执行 xpath 查询。使用 .NET 3.5。 文档看起来像这样: .... ... 因为文档包含各种字符实体( 等),我
我发现了很多这样的例子: public static boolean validateXMLSchema(String xsdPath, String xmlPath){ tr
大家好: 我想获得网络浏览器的实际高度,但我对 W3C DTD HTML 4.01 和 //W3C 有一些困惑//DTC XHTML 1.0,以下是我的问题详情: 如果我在页眉顶部使用 W3C DTD
我正在使用 Java 6 并尝试解析以 开头的格式良好的文档 我下载了实体 DTD“http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”,并将其放置在
这个问题已经有答案了: Xerces error: org.apache.xerces.impl.dv.dtd.DTDDVFactoryImpl (2 个回答) 已关闭 5 年前。 在 jboss w
这个问题在这里已经有了答案: Xerces error: org.apache.xerces.impl.dv.dtd.DTDDVFactoryImpl (2 个答案) 关闭 5 年前。 我正在使用
在下面的代码中: private Document transformDoc(Source source) throws TransformerException, IOException {
我是一名优秀的程序员,十分优秀!