سؤال

لدي ملف XML التالي:

<?xml version="1.0" encoding="UTF-8"?>  
<c1>
 <c2 id="0001" n="CM" urlget="/at/CsM" urle="/E/login.jsp">
 </c2>
 <c2 id="0002" n="C2M" urlget="/a2t/CsM" urle="/E2/login.jsp">
 </c2>
</c1> 

أحاول تحميل سمات C2 بهذه الطريقة:

Document d =
 DocumentBuilderFactory.newInstance()
 .newDocumentBuilder()
 .parse("epxy.xml");
Element  c1 = d.getDocumentElement();
Element c2 = (Element)c1.getFirstChild();
while (c2 != null) {
  ...         
  c2 = (Element)c2.getNextSibling();
}

لكني أحصل على الاستثناء java.lang.classcastexception: org.apache.xerces.dom.deferredtextimpl غير متوافق مع org.w3c.dom.elementعلى الخط

Element c2 = (Element)c1.getFirstChild();

قبل الحلقة.

أي تلميحات؟ شكرًا.

هل كانت مفيدة؟

المحلول

الطفل الأول هو المسافة البيضاء بين نهاية C1 وبداية C2.

استخدام W3C DOM للسير في الشجرة ليس بالأمر السهل. إذا لم يكن عليك استخدام W3C ، أوصي DOM4J - إنه أجمل بكثير للاستخدام. على سبيل المثال ، سيتم تصفية العقد النصية من العناصر ، حتى تتمكن من الاتصال

List children = c1.elements();

أو لتقييد الاسم

List children = c1.elements("c2");

نصائح أخرى

الطفل الأول من C1 هو عقدة نص تحتوي على سطر جديد. تحتاج إلى تكرار الأطفال الذين يتخطى العقد النصية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top