簡體   English   中英

用正則表達式關閉打開的XML標記

[英]Closing open XML tags with regex

基本上我想在這里做同樣的事情,這是在Python中完成的。 我想將所有自閉元素替換為長語法。

    <iframe src="http://example.com/thing"/>

    <iframe src="http://example.com/thing"></iframe>

完整示例:

 <html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <link rel="stylesheet" type="text/css" href="/sample.css">
  <title></title>
  <script type="text/javascript" src="/swfobject.js">
                //void
          </script>
  <script type="text/javascript" language="JavaScript" src="/generate.js">
//void
  </script>
  <script type="text/javascript" language="JavaScript" src="/prototype.js">
//void
  </script>
</head>
<body id="mediaPlayer" style="margin:0;padding:0;">
<script type="text/javascript">
                                swfobject.registerObject('id_G12564763');       


                function getFlashObject() {
                        var object;
                        if (navigator.appName == 'Microsoft Internet Explorer' || navigator.userAgent.indexOf("Chrome")!=-1)
                        {
                                object = document.getElementById('id_G12564763');
                        } 
                        else 
                        {
                                object = document['flash_id_G12564763'];
                        }
                        return object;
                }

        </script>
</body>
</html>

這可以用來替換一個標簽(javascript中的代碼)。

var becomes = "<iframe src='http://example.com/thing'/>".replace(/<(\w*) (.*)\//,'<$1 $2></$1')

同樣,在Java中。

String becomes = "<iframe src=\"http://example.com/thing\"/>".replaceFirst("<(\\w*) (.*)\\/", "<$1 $2></$1");
String resultHtml = inputHtml.replaceAll("(?six)<(\\w+)([^<]*?)/>", "<$1$2></$1>");

這將正確處理未終止的標簽,如<hr><img>

好,朋友們。 我找到了一個解決方法。 我把輸出方法掛鈎到這個html來自的xml,XSLT引擎負責為我關閉那些打開的標簽。 感謝您的回答,但如果您碰巧有問題的解決方案,請留下您的答案,我會將其標記為答案。 這可能對其他人有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM