从xml文件中获取某个标签的值

 

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;

public class Test {

    /**
     *
     * @param xml形状的str串
     * @return Document 对象
     */
    public Document StringTOXml(String str) {

        StringBuilder sXML = new StringBuilder();
        sXML.append(str);
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        Document doc = null;
        try {
            InputStream is = new ByteArrayInputStream(sXML.toString().getBytes("utf-8"));
            doc = dbf.newDocumentBuilder().parse(is);
            is.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return doc;
    }

    /**
     *
     * @param document
     * @return 某个节点的值 前提是需要知道xml格式,知道需要取的节点相对根节点所在位置
     */
    public String getNodeValue(Document document, String nodePaht) {
        XPathFactory xpfactory = XPathFactory.newInstance();
        XPath path = xpfactory.newXPath();
        String servInitrBrch = "";
        try {
            servInitrBrch = path.evaluate(nodePaht, document);
        } catch (XPathExpressionException e) {
            e.printStackTrace();
        }
        return servInitrBrch;
    }



    public static void main(String[] args) throws Throwable {
        String str = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<data>\r\n <message>\r\n <status>0</status>\r\n <value>处理成功</value>\r\n </message>\r\n <policeCheckInfos>\r\n <policeCheckInfo name=\"罗恩杰\" id=\"440105198307173914\">\r\n <message>\r\n <status>0</status>\r\n <value>查询成功</value>\r\n </message>\r\n <name desc=\"姓名\">罗恩杰</name>\r\n <identitycard desc=\"身份证号\">440105198307173914</identitycard>\r\n <compStatus desc=\"比对状态\">1</compStatus>\r\n <compResult desc=\"比对结果\">服务结果:库中无此号,请到户籍所在地进行核实!</compResult>\r\n <no desc=\"唯一标识\">40288945667c932001668b94e0cd6d66</no>\r\n </policeCheckInfo>\r\n </policeCheckInfos>\r\n</data>\r\n\r\n";
        Test t = new Test();
        // String ————》XML
        Document doc = t.StringTOXml(str);
        String nodePath = "/data/policeCheckInfos/policeCheckInfo/compResult";
        // getNodeValue
        String nodeValue = t.getNodeValue(doc, nodePath);
        System.out.println(nodeValue);

    }

}

 

有多种方法可以在 Python 定位 XML 页面标签。以下是一些常见的方法: 1. 使用 ElementTree 库 ElementTree 是 Python 标准库用于处理 XML 的模块之一。可以使用 ElementTree 库的 find() 和 findall() 方法来定位标签。 ```python import xml.etree.ElementTree as ET # 解析 XML 文件 tree = ET.parse('path/to/xml/file.xml') # 获取根元素 root = tree.getroot() # 使用 find() 方法定位标签 tag = root.find('tag_name') # 使用 findall() 方法定位多个相同的标签 tags = root.findall('tag_name') ``` 2. 使用 XPath 表达式 XPath 是一种用于定位 XML 文档节点的语言。Python 可以使用 lxml 库来解析 XML 并使用 XPath 表达式来定位标签。 ```python from lxml import etree # 解析 XML 文件 tree = etree.parse('path/to/xml/file.xml') # 使用 XPath 表达式定位标签 tag = tree.xpath('//tag_name') # 使用 XPath 表达式定位多个相同的标签 tags = tree.xpath('//tag_name') ``` 3. 使用 BeautifulSoup 库 BeautifulSoup 是一个 Python 库,用于从 HTML 和 XML 提取数据。可以使用 BeautifulSoup 库的 find() 和 find_all() 方法来定位标签。 ```python from bs4 import BeautifulSoup # 解析 XML 文件 with open('path/to/xml/file.xml', 'r') as f: soup = BeautifulSoup(f, 'xml') # 使用 find() 方法定位标签 tag = soup.find('tag_name') # 使用 find_all() 方法定位多个相同的标签 tags = soup.find_all('tag_name') ``` 这些是定位 XML 页面标签的常见方法,你可以根据自己的需求选择其的一种或多种方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值