У меня xml-результат из wmi-output.
<RESULTS NODE="192.168.a.s.o">
<CIM>
<INSTANCE CLASSNAME="Win32_NetworkAdapterConfiguration">
<PROPERTY NAME="ArpAlwaysSourceRoute" CLASSORIGIN="Win32_NetworkAdapterConfiguration"
PROPAGATED="true" TYPE="boolean"></PROPERTY>
<PROPERTY NAME="ArpUseEtherSNAP" CLASSORIGIN="Win32_NetworkAdapterConfiguration"
PROPAGATED="true" TYPE="boolean"></PROPERTY>
<PROPERTY NAME="Caption" CLASSORIGIN="CIM_Setting" TYPE="string">
<VALUE>[00000000] WAN Miniport (SSTP)</VALUE>
</PROPERTY>
<PROPERTY NAME="DatabasePath" CLASSORIGIN="Win32_NetworkAdapterConfiguration"
PROPAGATED="true" TYPE="string"></PROPERTY>
<PROPERTY NAME="DeadGWDetectEnabled" CLASSORIGIN="Win32_NetworkAdapterConfiguration"
PROPAGATED="true" TYPE="boolean"></PROPERTY>
<PROPERTY.ARRAY NAME="DefaultIPGateway"
CLASSORIGIN="Win32_NetworkAdapterConfiguration" PROPAGATED="true"
TYPE="string"></PROPERTY.ARRAY>
<PROPERTY NAME="DefaultTOS" CLASSORIGIN="Win32_NetworkAdapterConfiguration"
Тег INSTANCE повторяется несколько раз.
А теперь у меня есть тег PROPERTY.ARRAY, который я хочу прочитать.
Java-код таков:
NodeList instances = dom.getDocumentElement().getElementsByTagName("INSTANCE"); // get
// a
// nodelist
// of
// <INSTANCE>
// elements
if (instances != null && instances.getLength() > 0) {
for (int i = 0; i < instances.getLength(); i++) {
Element el = (Element) instances.item(i);
NodeList properties = el.getElementsByTagName("PROPERTY.ARRAY");
if (properties != null && properties.getLength() > 0) {
for (int j = 0; j < properties.getLength(); j++) {
Element propEl = (Element) properties.item(j);
if (propEl.getAttribute("NAME").equalsIgnoreCase(propertyName)) {
Node node = propEl.getFirstChild();
if (node != null)
value = node.getTextContent();
}
}// end for property
}
}// end for instance
}// end if
Проблема в том, что я всегда получаю нулевое значение в "(Элемент) properties.item (j);"
Где моя ошибка - какие-то идеары? кто-нибудь?