Я использую парсер DOM
в Java
и пытаюсь вернуть элементы дочерних узлов. Вот что мой XML выглядит следующим образом:Получить узлы дочернего узла XML при использовании парсера DOM
<?xml version="1.0" encoding="UTF-8"?>
<body>
<group name="Recently Added">
<item>
<asset>138682</asset>
<date>Mar 05, 2015</date>
<artist>
<![CDATA[Marlin G. Meharry, D.D.S]]>
</artist>
<album>
<![CDATA[Career Day - Marlin G. Meharry, D.D.S]]>
</album>
<url>
<![CDATA[http://web2.puc.edu/Departments/Media_Services/file/2015/CarDayMarlinGMeharryDDS.mp3]]>
</url>
<length>
<![CDATA[36:48]]>
</length>
</item>
<item>
<asset>140705</asset>
<date>Jan 01, 2000</date>
<artist>
<![CDATA[John Nunes]]>
</artist>
<album>
<![CDATA[Educator of the Year]]>
</album>
<url>
<![CDATA[http://web2.puc.edu/Departments/Media_Services/file/2015/2015-4-2LloydBest.mp3]]>
</url>
<length>
<![CDATA[40:46]]>
</length>
</item>
</group>
<group name="Heubach Lectureship Series">
<item>
<asset>48041</asset>
<date>Mar 07, 2009</date>
<artist>
<![CDATA[Barry C. Black, United States Senate Chaplain]]>
</artist>
<album>
<![CDATA[Heubach Lecture]]>
</album>
<url>
<![CDATA[http://web2.puc.edu/Departments/Media_Services/file/2009/HeubachLecture030709.mp3]]>
</url>
<length>
<![CDATA[1:12:57]]>
</length>
</item>
</group>
</body>
Итак, ниже мой корневой элемент У меня есть узлы группы, которые, как массивы, так как они содержат запись узлы. Мне нужно получить узлы элементов, чтобы получить их данные. Вот что я придумал до сих пор, но я до сих пор не знает, куда идти дальше:
URLConnection urlConnection = url.openConnection();
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(in);
NodeList categoryList = doc.getElementsByTagName("group");
for (int categoryNo=0; categoryNo<categoryList.getLength(); categoryNo++) {
//Element categoryNode = (Element)categoryList.item(categoryNo);
Node node = categoryList.item(categoryNo);
NodeList childNodes = categoryList.item(categoryNo).getChildNodes();
for (int childNo = 0; childNo < childNodes.getLength(); childNo++) {
Node childNode = childNodes.item(childNo);
if (childNode.getNodeType() == Node.ELEMENT_NODE) {
Element elem = (Element) childNode;
Log.d(elem.getNodeValue(), "Zed");
}
}
}
Любых намеки о том, как получить эти узлы записи, такие как актив, исполнитель, альбом, и т.д.?
Спасибо, что сработало! Теперь, как я могу получить атрибут «name» для каждого группового узла? –
@NicHubbard См. [Документация по API] (https://docs.oracle.com/javase/7/docs/api/org/w3c/dom/package-summary.html). Вы можете получить значение атрибута с помощью узла '((Element)) .getAttribute (" name ")' – manouti