第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Java 中重命名所有 XML 標記名稱

在 Java 中重命名所有 XML 標記名稱

森林海 2021-09-12 16:07:03
我有一個帶有這樣前綴的 XML 文件:<h:table> <h:tr> <h:td>Apples</h:td> <h:td>Bananas</h:td> </h:tr></h:table><f:table> <f:name>African Coffee Table</f:name> <f:width>80</f:width> <f:length>120</f:length></f:table>我想重命名移動冒號的前綴以支持破折號,因此:<h-table> <h-tr> <h-td>Apples</h:td> <h-td>Bananas</h:td> </h-tr></h-table><f-table> <f-name>African Coffee Table</f:name> <f-width>80</f:width> <f-length>120</f:length></f-table>使用 DOM 解析器我知道可以按名稱獲取元素,但在我的情況下,我需要將它們?nèi)繎?yīng)用重命名,因為模式始終相同?,F(xiàn)在我不得不無數(shù)次寫這個函數(shù),因為一個只是為了一個標簽:  NodeList nodes = document.getElementsByTagName("h:table");   for (Node eachNode: nodes) {  document.renameNode(eachNode, null, "h-table");  }是否可以使用更通用的方法?
查看完整描述

2 回答

?
墨色風(fēng)雨

TA貢獻1853條經(jīng)驗 獲得超6個贊

您可以像這樣遞歸地遍歷和重命名 DOM 元素:


private static void renameElement(Document document, Element element) {

    document.renameNode(element, null, element.getNodeName().replace(':', '-'));

    NodeList children = element.getChildNodes();

    for(int i = 0; i < children.getLength(); i++) {

        Node child = children.item(i);

        if (child instanceof Element) {

            renameElement(document, (Element) child);

        }


    }

}

從根元素開始遞歸:


renameElement(document, document.getDocumentElement());

但是,您應(yīng)該考慮是否真的要破壞XML 命名空間格式良好的一致性。好的,它仍然是一致的,但你失去了元素命名空間綁定。


查看完整回答
反對 回復(fù) 2021-09-12
?
小唯快跑啊

TA貢獻1863條經(jīng)驗 獲得超2個贊

你總是可以回到痛苦的舊文本處理,你知道。只需搜索和替換正則表達式模式。搜索

<([^:]*):(.*)>

并替換<$1-$2>為起始標簽。

如果您必須在 java 中執(zhí)行此操作,則有java.util.regex 包。但是sed用于此類任務(wù)。


查看完整回答
反對 回復(fù) 2021-09-12
  • 2 回答
  • 0 關(guān)注
  • 245 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號