У меня есть xml-файл, содержащий все разные типы протоколов в теге «PROTOCOLTAG». Я хочу извлечь значения только те теги, которые содержат строку «SITELINK». В настоящее время я могу получить значения всего тега «PROTOCOLTAG». Пожалуйста, помогитеИзвлечь значение тегов xml, содержащих определенную строку
XML-файл ..
<?xml version="1.0" encoding="UTF-8"?>
<CDMDataXML xmlns="http://www.avocent.org/trellis/CDMLoaderXMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.avocent.org/trellis/CDMLoaderXMLSchema CDMLoaderXMLSchema.xsd">
<NetworkProtocolDefinition oid="00000000-0000-0000-0000-000000004236">
<NAME>res.dcim.networkprotocol.def.SNMPV1-SSL</NAME>
<PROTOCOLTAG>SNMPV1:SSL</PROTOCOLTAG>
</NetworkProtocolDefinition>
<NetworkProtocolDefinition oid="00000000-0000-0000-0000-000000004237">
<NAME>res.dcim.networkprotocol.def.SNMPV2-SSL</NAME>
<PROTOCOLTAG>SNMPV2:SSL</PROTOCOLTAG>
</NetworkProtocolDefinition>
<NetworkProtocolDefinition oid="00000000-0000-0000-0000-000000004238">
<NAME>res.dcim.networkprotocol.def.BACNET-SITELINK_W-LDM-BREAKER-RS-485</NAME>
<PROTOCOLTAG>BACNET:SITELINK_W-LDM-BREAKER/RS-485</PROTOCOLTAG>
</NetworkProtocolDefinition>
<NetworkProtocolDefinition oid="00000000-0000-0000-0000-000000004239">
<NAME>res.dcim.networkprotocol.def.BACNET-SITELINK_W-LDM-SUBFEED-RS-485</NAME>
<PROTOCOLTAG>BACNET:SITELINK_W-LDM-SUBFEED/RS-485</PROTOCOLTAG>
</NetworkProtocolDefinition>
Java код ..
XMLInputFactory f = XMLInputFactory.newInstance();
XMLStreamReader rdr = f.createXMLStreamReader(new FileReader("test.xml"));
while (rdr.hasNext()) {
if (rdr.next() == XMLStreamConstants.START_ELEMENT) {
if (rdr.getLocalName().equals("PROTOCOLTAG")) {
System.out.println(rdr.getElementText());
}
}
}
Ожидаемый результат
BACNET:SITELINK_W-LDM-BREAKER/RS-485
BACNET:SITELINK_W-LDM-SUBFEED/RS-485
Выходной ток ..
SNMPV1:SSL
SNMPV2:SSL
BACNET:SITELINK_W-LDM-BREAKER/RS-485
BACNET:SITELINK_W-LDM-SUBFEED/RS-485
Выходной ток: Ничего, потому что ваш код ничего не печатать? – immibis
Я внес изменения. Забыл заявление println. – Lucy
Итак, у вас уже есть часть синтаксического анализа XML, вам просто нужно знать, как проверить, содержит ли строка определенную подстроку внутри нее? – immibis