前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PDM:批量替换PDM标签内容教程 – Java实现

PDM:批量替换PDM标签内容教程 – Java实现

作者头像
收心
发布2023-09-24 08:18:22
2320
发布2023-09-24 08:18:22
举报
文章被收录于专栏:Java实战博客

前言:需求格式各样,要是人力能解决问题的情况下,要机器干嘛?所以脚本处理本文内容势在必行!必须要学会处理这,提高生产力!人类伟大就是会利用各种工具。ChatGPT就是现代生产力的工具体现!

如果你对PDM格式感兴趣:请参考本站PDM标签含义解析:https://cloud.tencent.com/developer/article/2332509

目标PDM文件示例

代码语言:javascript
复制
<o:Column Id="o77">
<a:ObjectID>64879523-C582-471C-BC11-91177B7D418B</a:ObjectID>
<a:Name>事件类型</a:Name>
<a:Code>EVEN_TYPE</a:Code>
<a:CreationDate>1690874976</a:CreationDate>
<a:Creator>chengfansu</a:Creator>
<a:ModificationDate>1690874976</a:ModificationDate>
<a:Modifier>chengfansu</a:Modifier>
<a:Comment>事件类型</a:Comment>
<a:DefaultValue>NULL</a:DefaultValue>
<a:DataType>int(2)</a:DataType>
<a:Length>2</a:Length>
</o:Column>
<o:Column Id="o78">
<a:ObjectID>B7C5934C-8EF1-4668-92DA-1E94832587B1</a:ObjectID>
<a:Name>推送状态</a:Name>
<a:Code>PUSH_STATE</a:Code>
<a:CreationDate>1690874976</a:CreationDate>
<a:Creator>chengfansu</a:Creator>
<a:ModificationDate>1690874976</a:ModificationDate>
<a:Modifier>chengfansu</a:Modifier>
<a:Comment>推送状态</a:Comment>
<a:DefaultValue>NULL</a:DefaultValue>
<a:DataType>int(2)</a:DataType>
<a:Length>2</a:Length>
</o:Column>

Java代码 – PDM文本替换示例

PDM替换标签代码如下:替换PDM文件中: <o:Column>标签内部的<a:Name>使用<a:Comment>的文本信息

代码语言:javascript
复制
import org.w3c.dom.*;
import javax.xml.parsers.*;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.*;

/**
 * 替换PDM文件中: <o:Column>标签内部的<a:Name>使用<a:Comment>的文本信息
 * power by chatGPT
 */
public class TagReplacement {
    public static void main(String[] args) {
        String inputFile = "/XXXX/我是PDM.pdm"; // 输入文件路径
        String outputFile = "/XXXX/我是PDM-生成.pdm"; // 输出文件路径
        try {
            // 读取输入文件
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document doc = builder.parse(new File(inputFile));

            // 处理 <o:Column> 标签
            NodeList columnList = doc.getElementsByTagName("o:Column");
            for (int i = 0; i < columnList.getLength(); i++) {
                Element columnElement = (Element) columnList.item(i);
                NodeList nameList = columnElement.getElementsByTagName("a:Name");
                NodeList commentList = columnElement.getElementsByTagName("a:Comment");
                // 检查是否存在 <a:Name> 和 <a:Comment> 标签
                if (nameList.getLength() > 0 && commentList.getLength() > 0) {
                    Element nameElement = (Element) nameList.item(0);
                    Element commentElement = (Element) commentList.item(0);
                    // 获取 <a:Comment> 标签的文本内容
                    String commentText = commentElement.getTextContent();
                    // 将 <a:Name> 标签的文本内容替换为 <a:Comment> 的文本内容
                    nameElement.setTextContent(commentText);
                }
            }

            // 将修改后的文档保存为输出文件
            TransformerFactory transformerFactory = TransformerFactory.newInstance();
            Transformer transformer = transformerFactory.newTransformer();
            DOMSource source = new DOMSource(doc);
            StreamResult result = new StreamResult(new File(outputFile));
            transformer.transform(source, result);

            System.out.println("文本处理完成。");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

注意:处理完毕的文件头文件是

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8" standalone="no"?><?PowerDesigner AppLocale="UTF16" ID="{805C1741-6027-4C9E-BFD8-D2CB64A1BB0E}" Label="" LastModificationDate="1691505711" Name="数字化设计v0711" Objects="1416" Symbols="84" Target="MySQL 5.0" Type="{CDE44E21-9669-11D1-9914-006097355D9B}" signature="PDM_DATA_MODEL_XML" version="16.5.0.3982"?><!-- do not edit this file --><Model xmlns:a="attribute" xmlns:c="collection" xmlns:o="object">

要改成

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?PowerDesigner AppLocale="UTF16" ID="{805C1741-6027-4C9E-BFD8-D2CB64A1BB0E}" Label="" LastModificationDate="1691505711" Name="数字化设计v0711" Objects="1416" Symbols="84" Target="MySQL 5.0" Type="{CDE44E21-9669-11D1-9914-006097355D9B}" signature="PDM_DATA_MODEL_XML" version="16.5.0.3982"?><!-- do not edit this file --><Model xmlns:a="attribute" xmlns:c="collection" xmlns:o="object">

就是开启新的一行,这样PowerDesigner文件就可读了

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目标PDM文件示例
  • Java代码 – PDM文本替换示例
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档