"PROTOCOLTAG"태그에 모든 유형의 프로토콜을 포함하는 XML 파일이 있습니다. "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>
자바 코드 ..
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