Java 按名称XML返回子元素

Java 按名称XML返回子元素,java,xml,dom,Java,Xml,Dom,我是XML的初学者,所以请耐心听我说……我正在尝试编写一个简单的方法来返回第一个子元素的指定名称 我的方法是: public Element getChild(Element parent, String childName) { NodeList list = parent.getElementsByTagName(*); for(int i = 0; i < list.getLength(); i++) { if (list.item(i).getN

我是XML的初学者,所以请耐心听我说……我正在尝试编写一个简单的方法来返回第一个子元素的指定名称

我的方法是:

public Element getChild(Element parent, String childName) {

    NodeList list = parent.getElementsByTagName(*);

    for(int i = 0; i < list.getLength(); i++) {
        if (list.item(i).getNodeName().equals(childName)) {
            return (Element)list.item(i);
        }
    }
    return null;        
}
public元素getChild(元素父元素,字符串childName){
NodeList list=parent.getElementsByTagName(*);
对于(int i=0;i

但是,行
NodeList list=parent.getElementsByTagName(*)给我一个通用的“表达式的非法开始”错误。有人能解释一下我做错了什么吗?我已经在谷歌上搜索了20分钟,但运气不好,这意味着它要么非常模糊,要么非常明显。

将你的
*
放在引号中:
parent.getElementsByTagName(“*”)


它将只返回父元素中具有childName的第一个元素。如果可能发生多个事件,请使用循环返回元素列表

还要注意,
getElementsByTagName
查找与测试匹配的所有子元素,而不仅仅是直接子元素。您的方法被称为
getChild
,但它返回的节点可能是子节点、孙子节点等。
public Element getChild(Element parent, String childName) {

    NodeList list = parent.getElementsByTagName(childName);
    Node listN=list.item(0);
    NodeList listNC= listN.getChildNodes();
    Element listE=(Element)listNC;
    return listE;        
}