使用属性获取元素
问题内容:
我正在使用Java解析Xml,我想在属性值的帮助下解析元素。
例如 <tag1 att="recent">Data</tag1>
在这种情况下,我想使用att值解析tag1数据。我是java和xml的新手。请引导我。
问题答案:
有多种方法可以做到这一点。您可以使用xPath(示例),DOM
Document或SAX Parser(示例)来检索属性值和标记元素。
这是您要求的解决方法。我从不建议使用“ hack”类型,而是使用SAX(请参见示例链接)。
public static Element getElementByAttributeValue(Node rootElement, String attributeValue) {
if (rootElement != null && rootElement.hasChildNodes()) {
NodeList nodeList = rootElement.getChildNodes();
for (int i = 0; i < nodeList.getLength(); i++) {
Node subNode = nodeList.item(i);
if (subNode.hasAttributes()) {
NamedNodeMap nnm = subNode.getAttributes();
for (int j = 0; j < nnm.getLength(); j++) {
Node attrNode = nnm.item(j);
if (attrNode.getNodeType == Node.ATTRIBUTE_NODE) {
Attr attribute = (Attr) attrNode;
if (attributeValue.equals(attribute.getValue()) {
return (Element)subNode;
} else {
return getElementByAttributeValue(subNode, attributeValue);
}
}
}
}
}
}
return null;
}
PS: 未提供代码注释。它是作为练习给读者的。:)