Wiem, że to pytanie było wiele razy, ale nadal nie mogę go uruchomić. Zamieniam ciąg xml na obiekt Document, a następnie analizuję go. Oto kod:java xml obsada Węzeł do elementu
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();
}
Kiedy oddania obiektu do węzła N Element dostaję java.lang.ClassCastException wyjątku: org.apache.harmony.xml.dom.TextImpl nie może być oddane do org.w3c. dom.Element. Kiedy sprawdzam typ węzła obiektu Node, pojawia się Node.TEXT_NODE. Uważam, że powinien to być Node.ELEMENT_NODE. Czy mam rację?
W jaki sposób mogę przekonwertować węzeł na element, więc mogę zrobić coś jak element.getAttribute ("attrName").
Tu jest mój 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>
Z góry dzięki!
W jaki sposób mamy wiedzieć, czy pierwszy węzeł powinien być elementem lub tekstem, pokaż n nas dokument? Podejrzewam, że parser ma rację ... Podejrzewam, że prawdopodobnie po prostu chcesz pominąć węzły inne niż element. –
Dodałem xml. Węzeł powinien być elementem, a nie tekstem. Mam rację? –
Student
Tak, ale myślę, że znajdziesz element tekstowy (prawdopodobnie tylko linię podziału) pomiędzy '' i '' - oraz między każdym ' ' i ''. –