나는 이것이 여러 번 요청되었지만 여전히 작동시키지 못한다는 것을 알고있다. XML 문자열을 Document 객체로 변환 한 다음 파싱합니다. 내가 요소로 노드 객체 N 캐스트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();
}
내가 예외 java.lang.ClassCastException가 얻을 : 여기에 코드입니다 org.apache.harmony.xml.dom.TextImpl이 org.w3c에 캐스트 할 수 없습니다. dom.Element. Node 객체의 노드 유형을 확인하면 Node.TEXT_NODE가 표시됩니다. 나는 그것이 Node.ELEMENT_NODE 여야한다고 생각한다. 내가 맞습니까?
그래서 노드를 Element로 변환하면 element.getAttribute ("attrName")과 같은 작업을 수행 할 수 있습니다. 사전에
<?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입니다!
피싱이 없을 때 첫 번째 노드가 요소인지 텍스트인지 여부는 어떻게 알 수 있습니까? 보여주지 마라. 우리 문서 요? 강력하게 파서가 맞다고 생각합니다 ... 아마도 요소가 아닌 노드는 건너 뛰고 싶을 것입니다. –
xml을 추가했습니다. 노드은 텍스트가 아닌 요소 여야합니다. 나 맞아? –
Student
네,하지만 ''과 ''사이에 그리고 ' '과 ''사이에 텍스트 요소 (줄 바꿈)가있을 것입니다. –