亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

從 xml 中刪除所有命名空間

從 xml 中刪除所有命名空間

蕭十郎 2022-11-18 16:47:05
有沒有辦法從 xml 中刪除名稱空間(我知道沒有任何名稱沖突)?目前我正在為每個已知的名稱空間執行此操作:s = re.sub(r'(<\/?)md:', r'\1', s)             # remove md: s = re.sub(r'\s+xsi:', ' ', s)                 # remove xsi:但我想知道是否有更通用的東西可以使用。特定 xml 中不允許使用 CDATA。
查看完整描述

1 回答

?
墨色風雨

TA貢獻1853條經驗 獲得超6個贊

您可以通過從 Python 調用以下 XSLT-1.0 模板來使用 XSLT 方法。它將身份模板與name()將元素的(完整)s轉換為local-name()僅 s 的模板相結合。例如,這意味著所有<ns1:abc>元素都將轉換<abc>為 。名稱空間被省略。


但是,這有多大用處取決于您的用例。它減少了信息量,因此請小心處理。


<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:output method="xml" indent="yes"/>


    <xsl:template match="node()|@*">   <!-- Identity template copies all nodes (except for elements, which are handled by the other template) -->

        <xsl:copy>

            <xsl:apply-templates select="node()|@*" />

        </xsl:copy>

    </xsl:template>


    <xsl:template match="*">           <!-- Removes all namespaces from all elements -->

        <xsl:element name="{local-name()}">

            <xsl:apply-templates select="node()|@*" />

        </xsl:element>

    </xsl:template>


</xsl:stylesheet>

將其與 XSLT-1.0(或更高版本)框架/處理器一起應用。


查看完整回答
反對 回復 2022-11-18
  • 1 回答
  • 0 關注
  • 184 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號