以下是用 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,来完成同样的功能。

Java 解析 XML 字符串并拆分 Device 节点内容

原文地址: https://www.cveoy.top/t/topic/fRcg 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录