使用 Java 中的 DOM 解析器来处理字符串格式的 XML 信息。以下是一个示例代码,展示如何提取出 "<Device>" 标签中的内容:

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 xmlString = "<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(xmlString.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 = deviceElement.getTextContent();
                    System.out.println("Device Content: " + deviceContent);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

代码首先创建了一个 DocumentBuilder 对象,并使用该对象解析 XML 字符串,得到一个 Document 对象。接着,通过调用 document.getElementsByTagName("Device") 方法获取所有 Device 节点,并遍历这些节点,获取每个 Device 节点的文本内容。在这个示例中,由于 <Device></Device> 标签内没有任何文本内容,所以输出结果为空字符串。如果 <Device></Device> 标签内有文本内容,可以通过调用 deviceElement.getTextContent() 方法获取。

注意:

  1. 上述代码示例仅展示了如何从 XML 字符串中提取 <Device> 标签的内容。实际应用中,您可能需要根据具体需求提取其他节点或属性的内容。

  2. 为了使代码更易读,在代码示例中已将双引号替换为单引号。

Java 处理字符串格式的 XML 信息,并提供代码示例

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

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