关于使用Element.getNodeValue()返回NULL的问题

使用DOM方法解析XML数据,

比如这个xml:
<root>
  <name>admin</name>
</root>

在程序中读取

Document doc=........;
Element root=doc.getDocumentElement();
Element nameNode=(Element)root.getElementsByTagName_r(name).item(0);
String name=nameNode.getNodeValue();

name返回值竟然为NULL?

查阅资料发现,w3c对于xml的节点类型有严格规定,我们又没有自己编写DTD或者schema来指定数据类型的习惯,所以w3c就按自己的理解来了。所以name节点有两个身份,第一它是Node,没有值,第二它是Node的children,有一个text的值==admin。所以你要这样:

String name=nameNode.getFirstChild().getNodeValue();

另外,Element类实现了Node接口,该 Node 接口是整个文档对象模型的主要数据类型。它表示该文档树中的单个节点。

详细解释:

http://doc.java.sun.com/DocWeb/api/org.w3c.dom.Node

时间: 2024-12-15 06:13:00

关于使用Element.getNodeValue()返回NULL的问题的相关文章

关于GestureDetector的onFling方法e1返回null问题

解决办法: 定义一个MotionEvent对象,在ondown里面赋值  private MotionEvent mLastOnDownEvent = null; @Override         public boolean onDown(MotionEvent arg0) {          mLastOnDownEvent=arg0;         return false;       } @Override     public boolean onFling(MotionEve

PHP json_decode返回null解析失败原因

在PHP5.4之前 json_decode函数有两个参数json_decode有两个参数,第一个是待解析的字符串,第二个是是否解析为Arrayjson_decode要求的字符串比较严格:(1)使用UTF-8编码(2)不能在最后元素有逗号(3)不能使用单引号(4)不能有r,t,如果有请替换所以问题来了,不小心在返回的json字符串中返回了BOM头的不可见字符,某些编辑器默认会加上BOM头,如下处理才能正确解析json数据: $result = json_decode(trim($contents,

Java Socket编程readLine返回null,read返回-1的条件

客户端正常关闭socket的时候,服务器端的readLine()方法会返回null,或者read()方法会返回-1 Java Socket编程readLine返回null,read返回-1的条件,布布扣,bubuko.com

一个开发原则,永远不要返回NULL

看一篇文章:10个经典的java开发原则,里面一个原则:永远不要返回NULL. 为什么,因为很多代码都是 a.b(......).c(...) 这么连着调用.如果每层调用都要检查是否为空的话,代码就太难看了. 但是不返回null,返回什么呢?显然要反悔一个类的实例,但是怎么保证得到的结果是预期的呢,也就是说,怎么能保证这样虽然不会报“未交对象引用设置到对象的实例”(实际上就是空引用)这个错误,但是能得到“正确”的结果呢.显然,应该是nul但是没有返回null是得不到正确的结果,但是我们要保证结果

WORD Application.Documents.Open函数返回null的一种解决方法

DCOM Config Setting for "Microsoft Office Word 97 - 2003 Document" 内部配置一切正常,但Application.Documents.Open函数还是返回null.下面是一个解决方法: "C:\Windows\SysWOW64\config\systemprofile\"目录下创建一个"Desktop"目录. WORD Application.Documents.Open函数返回nu

关于SQL语句中SUM函数返回NULL的解决办法

SUM 是SQL语句中的标准求和函数,如果没有符合条件的记录,那么SUM函数会返回NULL. 但多数情况下,我们希望如果没有符合条件记录的情况下,我们希望它返回0,而不是NULL,那么我们可以使用例如下面的方法来处理: SELECT COALESCE(SUM(name),0) FROM person WHERE id > 0   行了,这下就不用费事去处理返回结果是否为NULL的情况了. COALESCE 函数的意思是返回参数列表中第一个为空的值,该方法允许传入多个参数,该函数也是SQL中的标准

Android开发:getViewById返回null的原因定位

最近在研究开发一些基于Android的App,遇到了一些问题,其中一个比较关键的是在Activity中的onCreate()方法中获取Button对象,代码大概如下: private Button mTrueButton; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_quiz); mTr

早期malloc分配时,如果内存耗尽分配不出来,会直接返回NULL。现在分配不出来,直接抛出异常(可使用nothrow关键字)

今天和同事review代码时,发现这样的一段代码: Manager * pManager = new Manager(); if(NULL == pManager) { //记录日志 return false; } 然后,一个同事就说这样写欠妥,应该改为: Manager * pManager = NULL; try { pManager = new Manager(); } catch(std::bad_alloc e) { //... } 我查了一下资料,发现: 1.malloc分配时,如果

android - Fragment getView() 总是返回null

如果你在使用Fragment的时候,有时会遇到调用Fragment.getView()的时候,总是返回一个null值. 可能出现此问题的原因是,你在Activity中,调用adapter.getItem()来获取当前Fragment. 大概如下 int index= _viewPaper.getCurrentItem(); Fragment fragment=_myFragmentAdapter.getItem(index); //这一步总是返回null值 View view= fragment