首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用Java获取XML节点值?

使用Java获取XML节点值的方法有多种,下面介绍两种常用的方法:

方法一:使用DOM解析器 DOM解析器是一种基于树结构的解析器,可以将整个XML文档加载到内存中,然后通过节点的层级关系来获取节点值。

示例代码如下:

代码语言:txt
复制
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class XMLParser {
    public static void main(String[] args) {
        try {
            // 创建DOM解析器工厂
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            // 创建DOM解析器
            DocumentBuilder builder = factory.newDocumentBuilder();
            // 加载XML文档
            Document document = builder.parse("path/to/your/xml/file.xml");
            
            // 获取根节点
            Node root = document.getDocumentElement();
            
            // 获取指定节点的值
            String nodeValue = getNodeValue(root, "nodeName");
            System.out.println("节点值:" + nodeValue);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    // 递归获取指定节点的值
    private static String getNodeValue(Node node, String nodeName) {
        if (node.getNodeName().equals(nodeName)) {
            return node.getTextContent();
        }
        
        NodeList childNodes = node.getChildNodes();
        for (int i = 0; i < childNodes.getLength(); i++) {
            Node childNode = childNodes.item(i);
            String value = getNodeValue(childNode, nodeName);
            if (value != null) {
                return value;
            }
        }
        
        return null;
    }
}

方法二:使用XPath表达式 XPath是一种用于在XML文档中定位节点的语言,可以通过XPath表达式来获取节点值。

示例代码如下:

代码语言:txt
复制
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class XMLParser {
    public static void main(String[] args) {
        try {
            // 创建DOM解析器工厂
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            // 创建DOM解析器
            DocumentBuilder builder = factory.newDocumentBuilder();
            // 加载XML文档
            Document document = builder.parse("path/to/your/xml/file.xml");
            
            // 创建XPath对象
            XPath xpath = XPathFactory.newInstance().newXPath();
            
            // 编译XPath表达式
            XPathExpression expression = xpath.compile("//nodeName");
            
            // 执行XPath表达式
            NodeList nodeList = (NodeList) expression.evaluate(document, XPathConstants.NODESET);
            
            // 获取节点值
            if (nodeList.getLength() > 0) {
                Node node = nodeList.item(0);
                String nodeValue = node.getTextContent();
                System.out.println("节点值:" + nodeValue);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

以上两种方法都可以用于获取XML节点值,具体选择哪种方法取决于实际需求和个人偏好。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

XML获取当前节点信息

DOM节点类型%XML.Document和%XML.Node类识别以下DOM节点类型:Element ($$$xmlELEMENTNODE)请注意,这些宏在%xml.DOM.inc包含文件中定义。...Jackson该节点是第三个节点的子节点1,53$$$xmlWHITESPACENODE该节点是节点的子节点获取当前节点信息%XML.Node的以下字符串属性。...当InterSystems IRIS读取XML文档并创建DOM时,它会标识文档中使用的所有名称空间,并为每个名称空间分配一个索引号。如果尝试访问其他类型节点的此属性,则会引发错误。...Nil如果xsi:nil或xsi:null为true,则等于true;如果此元素节点为1,则等于1。否则,此属性等于False。NodeData字符节点的值。NodeId当前节点ID。...以下方法提供有关当前节点的其他信息:GetText()method GetText(ByRef text) as %Boolean获取元素节点的文本内容。

1.6K50
  • 【Groovy】Xml 反序列化 ( 使用 XmlParser 解析 Xml 文件 | 获取 Xml 文件中的节点和属性 | 获取 Xml 文件中的节点属性 )

    文章目录 一、创建 XmlParser 解析器 二、获取 Xml 文件中的节点 三、获取 Xml 文件中的节点属性 四、完整代码示例 一、创建 XmlParser 解析器 ---- 创建 XmlParser...Xml 文件中的节点 ---- 使用 xmlParser.name 代码 , 可以获取 Xml 文件中的 节点 , 节点位于根节点下, 可以直接获取 , 由于相同名称的节点可以定义多个..., 因此这里获取的 节点 是一个数组 ; // 获取 xml 文件下的 节点 // 节点位于根节点下, 可以直接获取 // 获取的 节点是一个数组... 节点, 获取的是数组 // 也是获取第 0 个元素 println xmlParser.team[0].member[0] 三、获取 Xml 文件中的节点属性 ---- XmlParser...获取的节点类型是 Node 类型对象 , 调用 Node 对象的 attributes() 方法 , 可获取 Xml 节点的属性 ; // 获取 name 节点 Node nameNode = xmlParser.name

    7.2K20

    使用%XML.TextReader 节点属性

    节点属性如前所述,类中的%XML.TextReader解析XML文档并创建一个text reader对象,该对象由一组与文档组件相对应的节点组成;节点类型在本章前面的“文档节点”中进行了描述。...对于任何其他类型的节点,此属性为False。HasValue如果当前节点是具有值的节点类型(即使该值为空),则为True。否则,此属性为false。...Value值(如果有的话),适合于节点类型。具体情况如下表所示:节点的值,按类型attribute 属性的值。...Resolver - 分析源时使用的实体解析器。Flags - 用于控制SAX解析器执行的验证和处理的标志或标志组合。Mask - 用于指定XML源中感兴趣的项的掩码。...提示:对于%XML.TextReader的解析方法,默认掩码是$SAXCONTENTEVENTS。请注意,这会忽略注释。要解析所有可能的节点类型,请对此参数使用$$$SAXALLEVENTS。

    1K10

    【Groovy】自定义 Xml 生成器 BuilderSupport ( 构造 Xml 节点类 | 封装节点名称、节点值、节点属性、子节点 | 将封装的节点数据转为 Xml 字符串 )

    文章目录 一、构造 Xml 节点类 1、封装节点名称、节点值、节点属性、子节点 2、将封装的节点数据转为 Xml 字符串 二、Xml 节点类完整代码 一、构造 Xml 节点类 ---- 生成 Xml...数据前 , 首先要将 Xml 数据封装起来 , 先手机 Xml 的各个层级节点的信息 , 最后利用这些节点信息生成 Xml 数据 ; 参考下面的 xml 文件构造节点类 ; ...Tom 18 1、封装节点名称、节点值、节点属性、子节点 定义 XmlNode 类 , 使用该类代表节点...> 节点有 2 种情况 , 带属性的节点和不带属性的节点 , ① 带属性的节点 Tom ② 不带属性的节点 使用给定的...5 种情况 : 节点有值, 没有子节点 节点没有值, 没有子节点 节点有值, 有子节点 节点没有值, 有子节点 既没有值有没有子节点 if (value !

    6.2K30

    【Groovy】自定义 Xml 生成器 BuilderSupport ( 继承 BuilderSupport 抽象类 | 在 createNode 方法中获取节点名称、节点属性、节点值信息 )

    文章目录 一、继承 BuilderSupport 抽象类 二、在 createNode 方法中获取节点名称、节点属性、节点值信息 三、完整代码示例 1、MyBuilderSupport 生成器代码 2...、使用 MyBuilderSupport 生成器创建 Xml 代码 一、继承 BuilderSupport 抽象类 ---- 参考 Xml 生成器 MarkupBuilder , 自定义开发一个 Xml...生成器 MyBuilderSupport 对象 , 并使用闭包描述要创建的 Xml 文件 ; // 创建自定义 Xml 构造器 def myBuilderSupport = new MyBuilderSupport...:UTF-8], Tom 使用 myBuilderSupport.student 构建 student 根节点时 , 该节点没有值和属性 , 因此打印结果为 student, null, null ,...只打印了 name 名称 ; 使用 name("Tom", code: "UTF-8") 构建 name 节点 , 该节点的名称是 name , 属性值是 code:UTF-8 , 节点的值为 “Tom

    1.9K30
    领券