国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

解析xml文件,獲取需要的數(shù)據(jù)并寫入txt文件中

這篇具有很好參考價值的文章主要介紹了解析xml文件,獲取需要的數(shù)據(jù)并寫入txt文件中。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

=_=? 話不多說!直接上代碼!=_=

1、XmlUtil.java? ? ?xml解析工具類

public class XmlUtil {

    private static String dicName = "";
    private static String dicValue = "";
    // 用于存儲需要的數(shù)據(jù)
    private static List<Map<String, String>> paramlist = new ArrayList();

    /**
     * 找到所有xml文件,并進行解析
     * @param strPath 文件路徑
     * @param name  檢索的屬性名稱
     * @param value  檢索的屬性值
     * @throws Exception
     */
    public static void refreshFileList(String strPath, String name, String value){
        // 設置需要檢索的值
        dicName = name;
        dicValue = value;
        // 創(chuàng)建文件對象
        File dir = new File(strPath);
        File[] files = dir.listFiles();
        if (files == null) {
            return;
        }
        // 遍歷當前目錄下所有的文件和文件夾
        for (int i = 0; i < files.length; i++) {
            if (files[i].isDirectory()) {  // 文件夾
                refreshFileList(files[i].getAbsolutePath(), name, value);
            } else {  // 文件
                // 判斷是否為xml文件
                if (files[i].getAbsoluteFile().getName().split("\\.")[1].equals("xml")) {
                    // 解析xml文件
                    parseFile(files[i].getAbsoluteFile());
                }
            }
        }
    }

    /**
     * 將xml文件解析成Document對象
     * @param filePath
     */
    public static void parseFile(File filePath) {
        // 1.創(chuàng)建DocumentBuilderFactory對象
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        try {
            // 2.創(chuàng)建DocumentBuilder對象
            DocumentBuilder builder = factory.newDocumentBuilder();
            // 3.將xml文件解析成Document對象
            Document document = builder.parse(filePath);
            // 4.獲取根節(jié)點     model:Model為標簽名稱
            NodeList sList = document.getElementsByTagName("model:Model");
            // 5.通過Element方式解析并獲取使用字典的字段
            Map<String, String> parMap = element(sList);
            // 6.存入需要的數(shù)據(jù)
            if (!parMap.isEmpty()) {
                paramlist.add(parMap);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 用Element方式獲取節(jié)點信息以及所有屬性信息
     * @param list
     */
    public static Map<String, String> element(NodeList list) {
        Map<String, String> parMap = new HashMap<>();
        for (int i = 0; i < list.getLength(); i++) {
            Element element = (Element) list.item(i);
            // 獲取所有attribute標簽
            NodeList attribute = element.getElementsByTagName("attribute");
            for (int j = 0; j < attribute.getLength(); j++) {
                // 判斷是否有屬性
                if (attribute.item(j).hasAttributes()) {
                    Map<String, String> map = new HashMap<>();
                    // 存在則獲取所有的屬性
                    NamedNodeMap attributes = attribute.item(j).getAttributes();
                    for (int k = 0; k < attributes.getLength(); k++) {
                        // 屬性名
                        String nodeName = attributes.item(k).getNodeName();
                        // 屬性值
                        String nodeValue = attributes.item(k).getNodeValue();
                        // 拿到屬性名稱和屬性值
                        if ("name".equals(nodeName)) {
                            map.put("name", nodeValue);
                        }
                        if ("value".equals(nodeName)) {
                            map.put("value", nodeValue);
                        }
                    }
                    // 判斷是否使用的院系字典
                    if (dicName.equals(map.get("name")) && dicValue.equals(map.get("value"))) {
                        // 獲取使用了字典的字段
                        Node parentNode = attribute.item(j).getParentNode();
                        if (parentNode.hasAttributes()) {
                            // 所有的屬性
                            NamedNodeMap attributes1 = parentNode.getAttributes();
                            for (int l = 0; l < attributes1.getLength(); l++) {
                                parMap.put(attributes1.item(l).getNodeName(), attributes1.item(l).getNodeValue());
                            }
                        }
                        // 文件路徑存入
                        parMap.put("url", parentNode.getOwnerDocument().getDocumentURI());
                    }
                    map.clear();
                }
            }
        }
        return parMap;
    }

    /**
     * 講數(shù)據(jù)寫入txt文件中
     * @param writePath  寫入的路徑
     * @throws Exception
     */
    public void writeData(String writePath) throws Exception {
        // 拼接內(nèi)容
        StringBuffer stringBuffer = new StringBuffer();
        paramlist.forEach(e -> {
            stringBuffer.append(e.get("url") + "      =======      " + e.get("caption") + "      =======      " + e.get("name") + "\n");
        });
        File file = new File(writePath);
        File parentFile = file.getParentFile();
        // 文件夾不存在,創(chuàng)建文件夾
        if (!parentFile.exists()) {
            parentFile.mkdirs();
        }
        // 創(chuàng)建文件
        file.createNewFile();
        FileOutputStream fileOutputStream = new FileOutputStream(file);
        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(fileOutputStream));
        // 寫入數(shù)據(jù)
        writer.write(String.valueOf(stringBuffer));
        writer.close();
        System.out.println("文件寫入完畢");
    }
}

?2、測試代碼

public static void main(String[] args) throws Exception {
        long a = System.currentTimeMillis();
        XmlUtil xmlUtil = new XmlUtil();
        // 設置需要檢索的屬性名和值
        xmlUtil.refreshFileList("D:\\my\\file_test", "dic", "d-b122-sad-2d3q-12");
        xmlUtil.writeData("D:\\my\\outfile\\file1.txt");
        System.out.println("消耗時長:" + (System.currentTimeMillis() - a));

}

解析xml方式還有很多種,這只是其中一種,可以參考:Java XML解析 - 利用dom(org.w3c.dom)解析XML

?文章來源地址http://www.zghlxwxcb.cn/news/detail-634446.html

到了這里,關于解析xml文件,獲取需要的數(shù)據(jù)并寫入txt文件中的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • [Java]_[初級]_[使用SAX流的方式寫入XML文件]

    文件的寫入目前沒有發(fā)現(xiàn)可以增量寫入的,只能是完全重新寫入。對于大量數(shù)據(jù)需要寫入 XML 文件,還是和讀 XML 文件一樣,不需要生成 DOM 模型能節(jié)省不少的內(nèi)存和指令。 在 java 標準庫里,也是有相關的SAX類來寫入數(shù)據(jù)流, StreamResult(OutputStream) 負責把數(shù)據(jù)寫入輸出流。 之后

    2024年02月10日
    瀏覽(21)
  • java讀取并解析txt文件

    java讀取并解析txt文件

    利用org.json即可實現(xiàn) 先利用IO流讀取txt文件,讀取每行內(nèi)容并轉為普通字符串(json形式的格式一定要正確),再將其轉為JSONObject對象,通過JSONObject對象來取不同類型的值。 txt文件內(nèi)容格式如下: 代碼如下(示例): 如果txt文件的格式不符合json格式要求的話,會在JSONObjec

    2024年02月16日
    瀏覽(21)
  • java解析xml文件

    MyContentHandler類繼承自DefaultHandler,是一個自定義的內(nèi)容處理器。在該類中重寫了startElement()、endElement()和characters()方法,以處理XML解析的不同事件。

    2024年02月13日
    瀏覽(25)
  • Java如何快速讀取&解析JSON數(shù)據(jù)(文件),獲取想要的內(nèi)容?

    Java如何快速讀取&解析JSON數(shù)據(jù)(文件),獲取想要的內(nèi)容?

    手打不易,如果轉摘,請注明出處! 注明原文: https://zhangxiaofan.blog.csdn.net/article/details/132764186 目錄 前言 準備工作 Json數(shù)據(jù)(示例) 解析Json文件 第一步:創(chuàng)建一個空類 第二步:使用?Gsonformat 插件 ?第三步:復制Json內(nèi)容,創(chuàng)建對應類 第四步:讀取Json文件,提取目標數(shù)據(jù)

    2024年02月05日
    瀏覽(22)
  • Java中解析XML文件

    Java中解析XML文件

    ????????XML(EXtensible Markup Language),可擴展標記語言,相比于HTML可以自定義標簽,不遵循W3C標準 ? ? ? ? XML特點:跨平臺、跨語言、跨系統(tǒng)。XML與操作系統(tǒng)、編程語言的開發(fā)平臺無關。 ? ? ? ? XML作用:①數(shù)據(jù)交互②使用XML文件配置應用程序和網(wǎng)站 1.文檔聲明 包括文檔

    2024年02月09日
    瀏覽(94)
  • 統(tǒng)計數(shù)據(jù)集中目標大、中、小個數(shù)【需要用到y(tǒng)olo的txt標注文件數(shù)據(jù),其他格式數(shù)據(jù)不一定適用】

    統(tǒng)計數(shù)據(jù)集中目標大、中、小個數(shù)【需要用到y(tǒng)olo的txt標注文件數(shù)據(jù),其他格式數(shù)據(jù)不一定適用】

    統(tǒng)計數(shù)據(jù)集中目標大、中、小個數(shù) 最近看到一篇論文,其中在數(shù)據(jù)集介紹部分統(tǒng)計了大、中、小目標信息。因此,為了獲取數(shù)據(jù)集的統(tǒng)計信息,我參考了作者寫的代碼基于tensorpack統(tǒng)計coco數(shù)據(jù)集中大、中、小目標的數(shù)量 精簡版代碼如下(內(nèi)有多個參數(shù)需要修改,仔細查看注釋

    2024年02月13日
    瀏覽(372)
  • Java 文件處理完全指南:創(chuàng)建、讀取、寫入和刪除文件詳細解析

    文件處理是任何應用程序的重要部分。Java 提供了許多用于創(chuàng)建、讀取、更新和刪除文件的方法。 Java 文件處理 Java 中的文件處理主要通過 java.io 包中的 File 類完成。該類允許我們處理文件,包括創(chuàng)建、讀取、寫入和刪除文件。 要使用 File 類,我們首先需要創(chuàng)建該類的對象,

    2024年03月18日
    瀏覽(22)
  • Python — 獲取電腦串口數(shù)據(jù)并保存到txt文件

    打開設備管理器,雙擊端口設備,點擊端口設置,這里面的參數(shù)需要與下面代碼中的參數(shù)保持一致。 注意事項: 1、設置匹配的波特率; 2、設置對應的串口號; 以下是一段Python代碼,可以讀取 Windows 電腦上串口的數(shù)據(jù)并將其保存到一個文本文件中: 請注意, 上述代碼中的

    2024年02月11日
    瀏覽(22)
  • C++ 寫入txt文件內(nèi)容并追加內(nèi)容

    咨詢通義千問的“C++ 寫入txt文件內(nèi)容并追加內(nèi)容”: 可以使用ofstream類來寫入txt文件內(nèi)容。若想追加內(nèi)容,可以使用ios::app標志來創(chuàng)建輸出流對象,然后在寫入時將其設置為ios::app。以下是一個示例代碼: 在這個例子中,我們創(chuàng)建了一個名為“example.txt”的輸出流對象,并將

    2024年02月11日
    瀏覽(20)
  • C++對txt文件的寫入讀取操作

    C++對txt文件的寫入讀取操作

    摘自c++中文網(wǎng) ifstream 是輸入文件流(就是通過它定義的對象獲取文件中的內(nèi)容) ofstream 是輸出文件流(將內(nèi)容寫入文件) 注意 :要使用輸入輸出文件流要包含頭文件 #includefstream 首先要用 ofstream 定義一個輸入對象 ofstream outf; 這里的outf可以自定義 接著用 outf.open(文件路徑) 打

    2024年02月13日
    瀏覽(32)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包