我知道这被问了很多次,但我仍然无法使它工作。我将xml字符串转换为Document对象,然后解析它。下面是代码:java xml将节点转换为元素
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.*;
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
try
{
builder = factory.newDocumentBuilder();
Document document = builder.parse(new InputSource(new StringReader(result)));
Node head = document.getFirstChild();
if(head != null)
{
NodeList airportList = head.getChildNodes();
for(int i=0; i<airportList.getLength(); i++) {
Node n = airportList.item(i);
Element airportElem = (Element)n;
}
}
catch (Exception e) {
e.printStackTrace();
}
当我投的Node对象n至元我得到一个异常java.lang.ClassCastException:org.apache.harmony.xml.dom.TextImpl不能转换为org.w3c。 dom.Element。当我检查节点对象的节点类型时,它表示Node.TEXT_NODE。我相信它应该是Node.ELEMENT_NODE。我对吗?
那么,我如何将Node转换为Element,所以我可以做类似element.getAttribute(“attrName”)的操作。
这里是我的XML:
<?xml version="1.0" encoding="utf-8" ?>
<ArrayOfCity xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<City>
<strName>Abu Dhabi</strName>
<strCode>AUH</strCode>
</City>
<City>
<strName>Amsterdam</strName>
<strCode>AMS</strCode>
</City>
<City>
<strName>Antalya</strName>
<strCode>AYT</strCode>
</City>
<City>
<strName>Bangkok</strName>
<strCode>BKK</strCode>
</City>
</ArrayOfCity>
提前感谢!
我们如何是为了知道第一个节点是否应该是一个元素或者文本,当你的避风港不显示我们的文件?我强烈怀疑解析器是正确的,虽然...我怀疑你可能只是想跳过非元素节点。 –
我已经添加了xml。节点应该是一个元素,而不是文本。我对么? –
Student
是的,但我认为你会发现它''和''之间的文本元素(可能只是一个换行符) - 每个' '和''之间。 –