为什么这段代码返回的element 为 null

Element ele =
(Element) d.selectSingleNode("//province[@name='"+ pname + "']");
首先 这里的pname 测试过是有值的 看了半天 愣是不知道。

你这里用到了强制转换,引用其他论坛的一个例子来说明这个问题:
假设Person有两个子类Student和Employee。

new Student(); //一个学生对象
Person p1 = new Student(); 让一个Person引用指向Student对象。
Student stu1 = (Student)p1; //ok:将p转换为原类型。

Person p2 = new Employee();
Student stu2 = (Student)p2; //error: 试图将一个Employee强转为一个Student,会抛ClassCastException(类型转换异常)

Person p3 = new Person();
Student stu3 = (Student)p3; //error: 试图将父类转为子类,抛ClassCastException

所以你要确保的是d.selectSingleNode返回值为Element的父类,在此基础上,如果element仍旧返回null
那么说明问题出在了d.selectSingleNode()函数内部,这里你没有放代码,所以也没法进一步判断了
依据你的描述,这会儿JVM没有报错,那么多半是d.selectSingleNode()函数出了问题

你是在解析xml文档吗?如果是的话应该少一个namespace