JAVA 取XML问题,取回是null。请大家看下是什么问题。
以下为XML文档节点,是从webServie上返回的数据。<?xmlversion="1.0"encoding="utf-8"?><stringxmlns="http:/...
以下为XML文档节点,是从webServie上返回的数据。
<?xml version="1.0" encoding="utf-8" ?>
<string xmlns="http://tempuri.org/">
<?xml version="1.0" encoding="GBK"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetSysTime>
<result>
<code>0</code>
<note>成功</note>
</result>
<data>
<SysTime>2012-08-15 09:44:07</SysTime>
</data>
</GetSysTime>
</soap:Body>
</soap:Envelope>
</string>
在JAVA中取它的父类:
NodeList nodeList = doc.getElementsByTagName("soap:Body");
Node fatherNode = nodeList.item(0);
NamedNodeMap attributes = fatherNode.getAttributes();
attributes.getLength(); //可以取到它的长度是为1的。
但是继续想往下取子节点时,却是返回NULL
Node attribute = attributes.item(0);
System.out.println("属性名为:" + attribute.getNodeName()
+ " 属性值为:" + attribute.getNodeValue());
也试过直接
NodeList nodeList = doc.getElementsByTagName("GetSysTime");
返回是null。
麻烦请大家看下是怎么回事,是不是这个XML返回的有问题? 展开
<?xml version="1.0" encoding="utf-8" ?>
<string xmlns="http://tempuri.org/">
<?xml version="1.0" encoding="GBK"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetSysTime>
<result>
<code>0</code>
<note>成功</note>
</result>
<data>
<SysTime>2012-08-15 09:44:07</SysTime>
</data>
</GetSysTime>
</soap:Body>
</soap:Envelope>
</string>
在JAVA中取它的父类:
NodeList nodeList = doc.getElementsByTagName("soap:Body");
Node fatherNode = nodeList.item(0);
NamedNodeMap attributes = fatherNode.getAttributes();
attributes.getLength(); //可以取到它的长度是为1的。
但是继续想往下取子节点时,却是返回NULL
Node attribute = attributes.item(0);
System.out.println("属性名为:" + attribute.getNodeName()
+ " 属性值为:" + attribute.getNodeValue());
也试过直接
NodeList nodeList = doc.getElementsByTagName("GetSysTime");
返回是null。
麻烦请大家看下是怎么回事,是不是这个XML返回的有问题? 展开
1个回答
展开全部
获取节点时候要从跟路径获取,你的 NodeList nodeList = doc.getElementsByTagName("soap:Body"); 这个是没错的,因为是跟节点,但是
NodeList nodeList = doc.getElementsByTagName("GetSysTime"); 这句话就错了,因为节点路径没有写,应该为
List<Element> list = doc.selectNodes("//soap:Body//Cdc//GetSysTime");
获取节点看我的方法多简单:
Element root = dc.getRootElement();//获取跟节点
Element cchild = root.getChild("soap:Body").getChild("GetSysTime").getChild("result").getChild("code");//获取子code节点
String checkerName = cchilded.getChildTextTrim("code");//获取值得大小
其他的也是一样的,获取节点
NodeList nodeList = doc.getElementsByTagName("GetSysTime"); 这句话就错了,因为节点路径没有写,应该为
List<Element> list = doc.selectNodes("//soap:Body//Cdc//GetSysTime");
获取节点看我的方法多简单:
Element root = dc.getRootElement();//获取跟节点
Element cchild = root.getChild("soap:Body").getChild("GetSysTime").getChild("result").getChild("code");//获取子code节点
String checkerName = cchilded.getChildTextTrim("code");//获取值得大小
其他的也是一样的,获取节点
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询