读取XML中某个子属性的内容

读取XML中某个子属性的内容,


前言

提示:…………:

xml可扩展标记语言,是一种简单的数据存储语言。

使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然可扩展标记语言占用的空间比二进制数据要占用更多的空间,但可扩展标记语言极其简单易于掌握和使用。。


提示:以下是本篇文章正文内容,下面案例可供参考

一、xml举例(随便找了个xml和代码中的xml格式无关)


<?xml version="1.0" encoding="UTF-8"?>
<tasks>
	<task taskId="40217668982" type="1">
		<channelType>1</channelType>
		<orgNo>5042</orgNo>
		<hostAddress>10207</hostAddress>
		<commandId>88</commandId>
		<terStipulation>20</terStipulation>
		<aut>11</aut>
		<terminalId>20190907</terminalId>
		<terAddress>19960816</terAddress>
		<addrType>1</addrType>
		<pwScheme>0</pwScheme>
		<pw>0</pw>
		<measurePointNum>0</measurePointNum>
		<dataItem dataItemId="32000"/>
		<measurePoints>
			<measurePoint id="1" meterProperty=""/>
		</measurePoints>
	</task>
</tasks>



二、直接上样例代码?



import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.io.StringReader;

public class getXMLValue {

    public static String getvaluexml(String xmlString){

        String value ="";
        // 创建 SAXReader 对象
        SAXReader reader = new SAXReader();

        try {
            // 使用 SAXReader 读取 XML 字符串并解析为 Document 对象
            Document document = reader.read(new StringReader(xmlString));
            // 使用 XPath 表达式获取 operator 元素的 value 属性
            Element operatorElement = (Element) document.selectSingleNode("/tasks/task/results/result/dataItem/subpara");

            if (operatorElement != null) {
                // 获取 value 属性的值
                 value = operatorElement.attributeValue("value");
                if(value!=""&&value!=null)
                {
                    System.out.println("value中的值为: " + value);
                    int firstZeorIndex=value.indexOf('0');
                    if(firstZeorIndex!=-1)
                    {
                        System.out.println("第一个0所在下标为"+firstZeorIndex);
                    }
                    else {
                        System.out.println("没有0");
                    }
                }
                else {
                    value=operatorElement.attributeValue("errCode");
                }


            } else {
                Element ERROR1 = (Element) document.selectSingleNode("/tasks/task/exception");

                value = ERROR1.attributeValue("code");

            }
        } catch (DocumentException e) {
            e.printStackTrace();
        }
        return  value;
    }


    public static void main(String[] args) {
        String xmlString = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><tasks>  <task id=\"1608016320\" pri=\"0\" ver=\"0\">    <terminalId>10661783</terminalId>    <exception code=\"-1\">-1-6终端[10661783]当前不在线!</exception>    <excuteTime>27</excuteTime>  </task></tasks>";
        String xmlerror1="<?xml version=\"1.0\" encoding=\"UTF-8\"?><tasks><task id=\"1708201303\" pri=\"0\" ver=\"0\"><excuteTime>353</excuteTime><receiveFrameTime>20230828181942</receiveFrameTime><results><result terminalId=\"10661783\"><para id=\"terminalAddress\" value=\"17\"/><para id=\"hostAddress\" value=\"0\"/><para id=\"townSn\" value=\"0\"/><para id=\"measurePointNum\" value=\"0\"/><dataItem id=\"1877\"><subpara errCode=\"255\"/></dataItem></result></results></task></tasks>";
        String xmlerror2="<?xml version=\"1.0\" encoding=\"UTF-8\"?><tasks><task id=\"1708201303\" pri=\"0\" ver=\"0\"><excuteTime>353</excuteTime><receiveFrameTime>20230828181942</receiveFrameTime><results><result terminalId=\"10661783\"><para id=\"terminalAddress\" value=\"17\"/><para id=\"hostAddress\" value=\"0\"/><para id=\"townSn\" value=\"0\"/><para id=\"measurePointNum\" value=\"0\"/><dataItem id=\"1877\"><subpara value=\"1111111111111111110000000000000000000000000\"/></dataItem></result></results></task></tasks>";
        String testxml="ss";
        System.out.println("错误1:");
        String value= getXMLValue.getvaluexml(xmlString);
        System.out.println(value);
        System.out.println("错误2:");
        String value2= getXMLValue.getvaluexml(xmlerror1);
        System.out.println(value2);
        System.out.println("正确:");
        String value3= getXMLValue.getvaluexml(xmlerror2);
        System.out.println(value3);
       /* String value4= getXMLValue.getvaluexml(testxml);*/
    }
}




总结

提示:示例代码要根据你索要用的xml格式和你要取值的路径进行更改才可以用,我这里是示例了如下场景,某某某反馈三种xml,只有其中一种xml是正确的,有两种是错的,错误1xml和正确的xml结构一致,但所求子节点里的内容没有所要的value,只有一个errorcode,错误2xml和正确的xml结构不一样,且存在一个errorcode

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值