我有一个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>.
发布于 2015-04-26 16:04:14
您可以完全按照访问<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>节点中包含的节点,可以使用nNode.getParentNode().getNodeName()检查<sense>节点的父节点,例如:
if (!nNode.getParentNode().getNodeName().equals("re")) {
....
}https://stackoverflow.com/questions/29879909
复制相似问题