我在黑莓中解析Xml时遇到了一些问题。 如果Xml包含空标记。 代码返回一个Null异常.. 一些解决方案建议使用try和catch ..我该怎么做才能解决这个问题????
这是解析代码
DocumentBuilderFactory docBuilderFactory= DocumentBuilderFactory. newInstance();
DocumentBuilder docBuilder= docBuilderFactory.newDocumentBuilder();
docBuilder.isValidating();
doc = docBuilder.parse(conn.openInputStream());
doc.getDocumentElement ().normalize ();
list=doc.getElementsByTagName("*");
node=new String();
element = new String();
//this "for" loop is used to extract all elements and their value, so they can be displayed on the device
for (int i=0;i<list.getLength();i++){
Node value=list.item(i).getChildNodes().item(0);
//getting attribute ==> Node value=list.item(i).getAttributes().item(0);
node=list.item(i).getNodeName();
element=value.getNodeValue();
if(node.equals("Name")){
// some code goes here
空标签如:&lt; / tags&gt; 或者&lt;标签&gt; &LT; tag /&gt;
答案 0 :(得分:0)
代码的哪一部分抛出空指针异常?您的代码似乎假设getElementsByTagName返回的所有结果都有子节点,这是有问题的,因为查询是针对文档中的所有节点的。
答案 1 :(得分:0)
//文字是你的标签名称。
NodeList _textNdList = doc.getElementsByTagName(Text);
String result = getXMLTagValue(_textNdList,0);
public static String getXMLTagValue(NodeList node,int id)
{
if(node.item(id).getChildNodes().item(0) == null)
return "";
else
return node.item(id).getChildNodes().item(0).getNodeValue();
}
它会帮助你。我也面临同样的问题。并且,我确实使用此解决了这个问题。
`