gpt4 book ai didi

java - 将 HTML 解析器与 SGML 结合使用

转载 作者:行者123 更新时间:2023-12-01 14:50:49 24 4
gpt4 key购买 nike

我想将 XML 解析器与 SGML 文档一起使用,但这不起作用。阅读了一些建议后,解决这个问题的唯一方法似乎是使用 HTML 解析器。所以我基本上只是想做一个简单的查询,从我的文档中提取故事标题。 (如果我解析 null,它会工作 - 打印整个文档,只是我不确定如何访问特定标签,例如标题)。

public static void main(String[] args){
Parser parser = new Parser(xmlFile.getAbsolutePath());
NodeList list = parser.parse (new HasAttributeFilter ("id","title"));
Node node = list.elementAt(0);

if (node instanceof TagNode) {
TagNode meta = (TagNode) node;
String description = meta.getAttribute("title");
System.out.println(description);
}
}

SGML 文件的开头:

<head>
<meta words=61 rate=180>
<formname>Testing</formname>
<storyid>1234</storyid>
</head>
<story>
<fields>
<f id=title>Sports</f>
<f id=modify-by>Tester</f>
<f id=modify-date>315576000</f>
</fields>
<body>

最佳答案

从您的示例来看,您的内容模型似乎非常简单。在这种情况下,您可以实现一个简单的临时解析。

如果您非常确定未使用标记的部分(不仅是因为 CDATA 部分,还因为可以在参数实体中给出状态关键字,这会使一切变得更加复杂),并且 SGML 的深奥功能(例如由于未使用 DATATAG),您可以删除任何注释,然后扫描以下模式:

(?i)<f\s+id\s*=\s*["']?title["']?\s*>

假设 f 有一个属性 id (并且开始标签没有最小化,因为它可能是未关闭的或网络启用的),这会让您处于内容的开头。然后扫描直到“<”,瞧。

当然,更灵活的东西肯定需要 SGML 解析器。

关于java - 将 HTML 解析器与 SGML 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14877548/

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