gpt4 book ai didi

java - 使用 DOM 解析 XML 文件 (Java)

转载 作者:行者123 更新时间:2023-11-29 09:45:25 24 4
gpt4 key购买 nike

我想解析以下网址:http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=nucleotide&id=224589801

于是我想到了以下方法:

public void parseXml2(String URL) {
DOMParser parser = new DOMParser();

try {
parser.parse(new InputSource(new URL(URL).openStream()));
Document doc = parser.getDocument();

NodeList nodeList = doc.getElementsByTagName("Item");
for (int i = 0; i < nodeList.getLength(); i++) {
Node n = nodeList.item(i);
Node actualNode = n.getFirstChild();
if (actualNode != null) {
System.out.println(actualNode.getNodeValue());
}
}

} catch (SAXException ex) {
Logger.getLogger(TaxMapperXml.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(TaxMapperXml.class.getName()).log(Level.SEVERE, null, ex);
}
}

通过这种方法,我可以获取 Item 节点的值,但不能获取它们的任何属性。我尝试使用 NamedNodeMap 对 getAttribute() 进行试验,但仍然无济于事。

  1. 为什么我必须执行 n.getFirstChild().getNodeValue(); 来获取实际值? n.getNodeValue() 只返回 null?这不是违反直觉的吗 - 显然在我的例子中节点没有子节点?

  2. 是否有一些更强大且被广泛接受的使用 DOM 解析 XML 文件的方法?我的文件最多不会有 15-20 行那么大,所以 SAX 不是必需的(或者是吗?)

最佳答案

  1. 被 XML 标签包围的文本值在 DOM 中也被视为节点。这就是为什么在获取值之前必须先获取文本节点。如果您尝试计算 <Item> 中的节点数,你会看到只要有文本,就有一个节点。

  2. XOM有更直观的界面,但没有 org.w3c.dom.*界面。

如果你想使用内置解析器,你应该看看http://www.java-samples.com/showtutorial.php?tutorialid=152

DOMParser您尝试使用的是礼仪,不可移植。

关于java - 使用 DOM 解析 XML 文件 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7901744/

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