java获取xml里的标签及内容或者获取标签内的文本内容

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

public class XmlAnalysis {
    private String xml; // XML 字符串
    private String ProductContent; // <Product> 标签内容
    private String ProjectInfoContent; // <ProjectInfo> 标签内容

    public XmlAnalysis(String xml) {
        this.xml = xml;
        ProductContent = "";
        ProjectInfoContent = "";

        // 创建 DOM 解析器工厂
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        try {
            // 创建 DOM 解析器
            DocumentBuilder builder = factory.newDocumentBuilder();

            // 将 XML 字符串转换为输入流
            ByteArrayInputStream input = new ByteArrayInputStream(xml.getBytes());

            // 解析输入流,得到文档对象模型(DOM)
            Document document = builder.parse(input);

            // 获取 <Product> 标签
            NodeList productNodeList = document.getElementsByTagName("Product");

            // 遍历节点列表,取出每个 <Product> 标签及其内容
            for (int i = 0; i < productNodeList.getLength(); i++) {
                Element element = (Element) productNodeList.item(i);
                String content = getNodeAsString(element); // 获取标签及其内容
                String content = element.getTextContent(); // 获取标签内的文本内容
                ProductContent += content;
                System.out.println("<Product>: " + content);
            }

            // 获取 <ProjectInfo> 标签
            NodeList projectInfoNodeList = document.getElementsByTagName("ProjectInfo");

            // 遍历节点列表,取出每个 <ProjectInfo> 标签及其内容
            for (int i = 0; i < projectInfoNodeList.getLength(); i++) {
                Element element = (Element) projectInfoNodeList.item(i);
                String content = getNodeAsString(element);
                String content = element.getTextContent(); // 获取标签内的文本内容
                ProjectInfoContent += content;
                System.out.println("<ProjectInfo>: " + content);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private String getNodeAsString(Element element) {
        StringBuilder builder = new StringBuilder();

        // 开始标签
        builder.append("<").append(element.getTagName()).append(">");

        // 处理子节点
        NodeList childNodes = element.getChildNodes();
        for (int i = 0; i < childNodes.getLength(); i++) {
            builder.append(nodeToString(childNodes.item(i)));
        }

        // 结束标签
        builder.append("</").append(element.getTagName()).append(">");

        return builder.toString();
    }

    private String nodeToString(org.w3c.dom.Node node) {
        StringBuilder builder = new StringBuilder();

        // 文本节点
        if (node.getNodeType() == org.w3c.dom.Node.TEXT_NODE) {
            builder.append(node.getNodeValue());
        }

        // 元素节点
        else if (node.getNodeType() == org.w3c.dom.Node.ELEMENT_NODE) {
            Element element = (Element) node;
            builder.append(getNodeAsString(element));
        }

        return builder.toString();
    }

    public String getProductContent() {
        return ProductContent;
    }

    public String getProjectInfoContent() {
        return ProjectInfoContent;
    }

    // 测试示例
    public static void main(String[] args) {
        String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><TestProjectInfo><Products><Product><Model>XXX(XX)</Model></Product><Product><Model>XXX(XX)</Model><TuHao>hq10</TuHao><CpName>HQ-10</CpName><CpCode>Z06-TEST01</CpCode><BatchCode>Z06</BatchCode><DaiHao /><BanBen>/</BanBen></Product></Products><ProjectList><ProjectInfo><ProjectTestInfo><ID></ID><Name>装配准备</Name><Code></Code><Gongxh>10</Gongxh><OldGongxh>12</OldGongxh><GongxName>装配准备</GongxName><ProcVersion>A.6</ProcVersion><TechDoc>XM07.01-001</TechDoc><PlanBeginDate>2023-03-31 12:00:00</PlanBeginDate><PlanEndDate>2023-03-31 12:00:00</PlanEndDate><RealStartTime>2023-04-01 12:00:00</RealStartTime><RealEndTime>2023-04-02 12:00:00</RealEndTime><TaskSendTime>2023-04-03 12:00:00</TaskSendTime><Stage>Z</Stage><FuZeRen>shixiao</FuZeRen><CaoZuoRen>houenwei</CaoZuoRen><Status></Status><Miji></Miji><Sycd></Sycd><Xqbm>光导部</Xqbm><Czbm>光导部</Czbm><WorkCenter>光学导航与探测事业部</WorkCenter><Intention></Intention><Note></Note><TestBrief></TestBrief><TaskBook></TaskBook><TbomId></TbomId><Kzxx></Kzxx><Documents><Document><FileID>http://10.122.254.25:9000/otatest/10_ZLJL2303030001_A.6_20230403_145319977.json</FileID><FileName>30_ZLJL2304010005_B.8_20230401_184543851.json</FileName></Document></Documents></ProjectTestInfo><CanYuRens><CaoZuoRen>houenwei</CaoZuoRen></CanYuRens></ProjectInfo></ProjectList></TestProjectInfo>";


        XmlAnalysis xmlAnalysis = new XmlAnalysis(xml);
        String productContent = xmlAnalysis.getProductContent();
        String projectInfoContent = xmlAnalysis.getProjectInfoContent();

        System.out.println("Product Content: " + productContent);
        System.out.println("ProjectInfo Content: " + projectInfoContent);
    }
}


 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Java中的DOM解析器来修改XML文件中的标签。以下是一个示例代码,用于将XML文件中的一个标签修改为指定的值: ```java import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class ModifyXML { public static void main(String[] args) { try { String filepath = "path/to/xmlfile.xml"; File xmlFile = new File(filepath); DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); Document doc = docBuilder.parse(xmlFile); // Get the root element Node root = doc.getDocumentElement(); // Get the element by tag name NodeList nodes = root.getElementsByTagName("tagname"); // Update the tag value for (int i = 0; i < nodes.getLength(); i++) { Element element = (Element) nodes.item(i); element.setTextContent("newvalue"); } // Write the updated document to file TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); DOMSource source = new DOMSource(doc); StreamResult result = new StreamResult(new File(filepath)); transformer.transform(source, result); System.out.println("XML file updated successfully"); } catch (ParserConfigurationException pce) { pce.printStackTrace(); } catch (TransformerException tfe) { tfe.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } } ``` 在上面的代码中,我们首先使用DocumentBuilder和DocumentBuilderFactory类来解析XML文件。然后,我们获取根元素并使用getElementsByTagName方法获取要修改的元素列表。我们在循环中遍历这些元素,并使用setTextContent方法将其文本内容设置为新的值。最后,我们使用Transformer类将更新后的文档写回到原始XML文件中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值