Java 解析 XML 字符串并拆分 Device 节点内容
以下是用 Java 处理字符串格式的 XML 信息并拆分每个 '
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.ByteArrayInputStream;
public class XMLParser {
public static void main(String[] args) {
String xml = "<Organization>
" + "<Department>
" + "</Department>
" + "<Devices>
" + "<Device></Device>
" + "<Device id='1000028' type='601' name='报警主机' manufacturer='1' model='11' ip='10.11.2.1' port='61006' user='admin' password='31C22770AEA33BCD244CE06BEBA5694A' desc='' status='1' logintype='' registDeviceCode='' proxyport='0' unitnum='0' deviceCN='' deviceSN='' deviceIp='10.11.9.197' devicePort='37777' devMaintainer='' devMaintainerPh='' deviceLocation='' deviceLocPliceStation='' baudRate='' comCode='' VideoType='' shopName='' address='' firstOwner='' firstPosition='' firstPhone='' firstTel='' serviceType='0' ownerGroup='' belong='' role='0' callNumber='' rights='11000000000000000000000011101000000101100011111111111111111'>
" + " <UnitNodes index='0' channelnum='60' type='3'>
" + " <Channel id='1000028$3$0$0' name='防区1' desc='' status='0' channelType='0' channelSN='' rights='11000000000000000000000011101000000101100011111111111111111' alarmType='80081' alarmLevel='1' />
" + " <Channel id='1000028$3$0$1' name='防区2' desc='' status='0' channelType='0' channelSN='' rights='11000000000000000000000011101000000101100011111111111111111' alarmType='80081' alarmLevel='1' />
" + " <Channel id='1000028$3$0$2' name='防区3' desc='' status='0' channelType='0' channelSN='' rights='11000000000000000000000011101000000101100011111111111111111' alarmType='80081' alarmLevel='1' />
" + " <Channel id='1000028$3$0$3' name='防区4' desc='' status='0' channelType='0' channelSN='' rights='11000000000000000000000011101000000101100011111111111111111' alarmType='80081' alarmLevel='1' />
" + " </UnitNodes>
" + " <UnitNodes index='0' channelnum='4' type='4'>
" + " <Channel id='1000028$4$0$0' name='1' desc='' status='0' channelType='0' channelSN='' rights='11000000000000000000000011101000000101100011111111111111111' alarmType='0' />
" + " <Channel id='1000028$4$0$1' name='2' desc='' status='0' channelType='0' channelSN='' rights='11000000000000000000000011101000000101100011111111111111111' alarmType='0' />
" + " <Channel id='1000028$4$0$2' name='3' desc='' status='0' channelType='0' channelSN='' rights='11000000000000000000000011101000000101100011111111111111111' alarmType='0' />
" + " <Channel id='1000028$4$0$3' name='4' desc='' status='0' channelType='0' channelSN='' rights='11000000000000000000000011101000000101100011111111111111111' alarmType='0' />
" + " </UnitNodes>
" + " </Device>
" + "</Devices>
" + "</Organization>";
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new ByteArrayInputStream(xml.getBytes()));
NodeList deviceList = document.getElementsByTagName("Device");
for (int i = 0; i < deviceList.getLength(); i++) {
Node deviceNode = deviceList.item(i);
if (deviceNode.getNodeType() == Node.ELEMENT_NODE) {
Element deviceElement = (Element) deviceNode;
String deviceContent = getStringFromElement(deviceElement);
System.out.println("Device " + (i + 1) + ":\n" + deviceContent);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
private static String getStringFromElement(Element element) {
StringBuilder stringBuilder = new StringBuilder();
NodeList childNodes = element.getChildNodes();
for (int i = 0; i < childNodes.getLength(); i++) {
Node childNode = childNodes.item(i);
if (childNode.getNodeType() == Node.ELEMENT_NODE) {
Element childElement = (Element) childNode;
stringBuilder.append("<").append(childElement.getNodeName()).append(">");
stringBuilder.append(childElement.getTextContent());
stringBuilder.append("</").append(childElement.getNodeName()).append(">
");
}
}
return stringBuilder.toString();
}
}
注意:示例代码使用了 Java 的内置 XML 解析库,需要引入相关的库文件。
您也可以使用其他 XML 解析库,例如 JDOM 或 DOM4J,来完成同样的功能。
原文地址: https://www.cveoy.top/t/topic/fRcg 著作权归作者所有。请勿转载和采集!