gpt4 book ai didi

java - 在JAVA中使用DOM解析器通过ID获取元素

转载 作者:行者123 更新时间:2023-11-30 08:14:17 25 4
gpt4 key购买 nike

我有一个 XML 文件,其结构如下:

<?xml version="1.0" encoding="UTF-8"?>
<entry id="young_1">
<sense n="1">
<cit type="translation" lang="fr">
<quote>jeune</quote>
</cit>
<re type="phr">
<sense>
<cit type="translation" lang="fr">
<quote>un jeune homme</quote>
</cit>
</sense>
</re>
</sense>
<sense n="2">
<cit type="translation" lang="fr">
<quote>petits
<hi rend="i">mpl</hi>
</quote>
</sense>
</entry>

我需要使用JAVA解析它来获取每个quote cit 中包含的值具有属性 type="translation" 的元素:

  • 我只需要 quote 的文本内容元素,但我不需要直接节点的文本内容,例如 <quote>petits <hi rend="i">mpl</hi></quote>
  • 我不需要 quote 的文本内容re 中包含的元素元素

最后我需要获得这个结果:

entry ==> young_1
translations ==> [jeune;petits]

现在我的JAVA代码是:

    //load xml document for DOM parsing
Document doc = loadXMLFromString(xmlContent);

//now try to parse it
NodeList nList = doc.getElementsByTagName("sense");
for (int i = 0; i < nList.getLength(); i++) {
Node nNode = nList.item(i);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
NodeList fieldNodes = eElement.getElementsByTagName("cit");
for(int j = 0; j < fieldNodes.getLength(); j++) {
Node fieldNode = fieldNodes.item(j);
NamedNodeMap attributes = fieldNode.getAttributes();
Node attr = attributes.getNamedItem("type");
if(attr != null) {
if(attr.getTextContent().equals("translation")) {
//how can I access <quote> element ???
}
}
}
}
}

但我不知道如何访问 <quote> ...

最佳答案

您可以访问<quote>元素与访问 <cit> 的方式完全相同元素:通过使用Element#getElementsByTagName(String name)方法:

Node attr = attributes.getNamedItem("type");
if (attr != null) {
if (attr.getTextContent().equals("translation")) {
Element citElement = (Element) fieldNode;
NodeList quoteNodeList = citElement.getElementsByTagName("quote");
if(quoteNodeList.getLength() > 0) {
Node quoteNode = quoteNodeList.item(0);
String quote = quoteNode.getTextContent();
...
}
}
}

为了排除 <re> 中包含的节点节点,您可以检查 <sense> 的父节点节点使用 nNode.getParentNode().getNodeName() ,例如:

 if (!nNode.getParentNode().getNodeName().equals("re")) {
....
}

关于java - 在JAVA中使用DOM解析器通过ID获取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29879909/

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