整合營銷服務商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          在字符串中處理 html 和 xml

          習《Python Cookbook》第三版

          將 HTML 或者 XML 實體如 &entity; 或 &#code; 替換為對應的文本。再者,你需要轉換文本中特定的字符 (比如<, >, 或 &)。

          如果你想替換文本字符串中的 ‘<’ 或者 ‘>’ ,使用 html.escape() 函數(shù)可以很容易的完成。比如:

          import html
          
          my_str = 'Elements are written as "<tag>text</tag>".'
          print(my_str)	# Elements are written as "<tag>text</tag>".
          print(html.escape(my_str))	# Elements are written as "<tag>text</tag>".
          print(html.escape(my_str, quote=False))	# Elements are written as "<tag>text</tag>".

          對于escape()方法的官方解釋:

          html.escape(s, quote=True)

          Convert the characters &, < and > in string s to HTML-safe sequences. Use this if you need to display text that might contain such characters in HTML. If the optional flag quote is true, the characters (") and (') are also translated; this helps for inclusion in an HTML attribute value delimited by quotes, as in <a href="...">.

          將字符串s中的字符&,<和>轉換為HTML安全序列。 如果您需要在HTML中顯示可能包含此類字符的文本,請使用此選項。 如果可選的標記quote為true,則還會翻譯字符(“)和(');這有助于包含在用引號分隔的HTML屬性值中,如<a href="...">中所示。

          如果你正在處理的是 ASCII 文本,并且想將非 ASCII 文本對應的編碼實體嵌入進去,可以給某些 I/O 函數(shù)傳遞參數(shù) errors='xmlcharrefreplace' 來達到這個目。比如:

          my_str = 'Spicy Jalape?o'
          
          print(my_str.encode('ascii', errors='xmlcharrefreplace'))	# b'Spicy Jalape?o'

          其中,xmlcharrefreplace的作用是:將非ascii字符替換為xml合適字符引用

          字符引用通過其通用字符集/ Unicode代碼點引用字符,并使用以下格式:

          &#nnnn; 或者 &#xhhhh;

          上邊的例子非ascii碼字符?,被替換為ñ;

          更多的XML字符引用,可以查看WIKI網(wǎng)址:

          https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references

          為了替換文本中的編碼實體,你需要使用另外一種方法。如果你正在處理 HTML或者 XML 文本,試著先使用一個合適的 HTML 或者 XML 解析器。通常情況下,這些工具會自動替換這些編碼值,你無需擔心。

          有時候,如果你接收到了一些含有編碼值的原始文本,需要手動去做替換,通常你只需要使用 HTML 或者 XML 解析器的一些相關工具函數(shù)/方法即可。比如:

          my_str_special = 'This is a special character "<è>"'
          print(html.unescape(my_str_special))	# This is a special character "<è>"
          
          
          from xml.sax.saxutils import unescape
          my_str_special_1 = 'The prompt is >>>'
          print(unescape(my_str_special_1))	# The prompt is >>>

          在生成 HTML 或者 XML 文本的時候,如果正確的轉換特殊標記字符是一個很容易被忽視的細節(jié)。特別是當你使用 print() 函數(shù)或者其他字符串格式化來產(chǎn)生輸出的時候。使用像 html.escape() 的工具函數(shù)可以很容易的解決這類問題。

          如果你想以其他方式處理文本,還有一些其他的工具函數(shù)比如xml.sax.saxutils.unescapge() 可以幫助你。然而,你應該先調研清楚怎樣使用一個合適的解析器。比如,如果你在處理 HTML 或 XML 文本,使用某個解析模塊比如html.parse 或 xml.etree.ElementTree 已經(jīng)幫你自動處理了相關的替換細節(jié)。

          文介紹如何通過Java后端程序代碼來展示如何將html轉為XML。此功能通過采用Word API- Free Spire.Doc for Java 提供的Document.saveToFile()方法來實現(xiàn);該方法支持的目標文檔格式多達 30余種。另外,該API也提供了多種方法,如Document.saveToEpub()Document.saveToFile()Document.saveToImages()Document.saveToSVG()Document.saveToTxt()、Document.saveToTiff()等,可用于將源文件轉為Epub、圖片、文本文件等目標文檔格式。

          下面,將以html轉為xml格式為例,介紹如何實現(xiàn)轉換。以下是詳細方法及步驟。


          【關于如何導入jar包】

          通過 Maven倉庫 下載導入,如下配置pom.xml:

          <repositories>
              <repository>
                  <id>com.e-iceblue</id>
                  <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
              </repository>
          </repositories>
          <dependencies>
              <dependency>
                  <groupId>e-iceblue</groupId>
                  <artifactId>spire.doc.free</artifactId>
                  <version>5.2.0</version>
              </dependency>
          </dependencies>

          如需手動導入,需要下載 jar包 到本地,然后解壓,找到lib文件夾下的Spire.Doc.jar文件。在IDEA中打開“Project Structure”界面,執(zhí)行如圖步驟將本地路徑下的jar文件手動引入Java程序:


          【將HTML轉為XML】

          轉換時,可參考如下代碼步驟:

          • 創(chuàng)建Document類的對象。
          • 調用Document.loadFromFile(String fileName, FileFormat fileFormat)方法加載HTML文件。
          • 通過Document.saveToFile(String fileName, FileFormat fileFormat)方法保存為XML格式到指定路徑。

          Java

          import com.spire.doc.*;
          
          public class HTMLtoXML {
              public static void main(String[] args) {
                  //創(chuàng)建Document類的對象
                  Document doc = new Document();
          
                  //加載html文件
                  doc.loadFromFile("sample.html",FileFormat.Html);
          
                  //保存為XML格式
                  doc.saveToFile("HTMLtoXML.xml", FileFormat.Xml);
              }
          }

          轉換效果:

          —END—


          原文出處:https://www.cnblogs.com/Yesi/p/16392430.html

          如果本文對你有幫助,別忘記給我個3連 ,點贊,轉發(fā),評論,

          學習更多JAVA知識與技巧,關注與私信博主(555),即可免費領取

          用XMLSpy編輯與約束XML文件操作

          一、XML文件介紹

          可擴展標記語言,標準通用標記語言的子集,簡稱XML。是一種用于標記電子文件使其具有結構性的標記語言。

          XML文件格式是純文本格式,在許多方面類似于HTML,XML由XML元素組成,每個XML元素包括一個開始標記(<title>),一個結束標記(</title>)以及兩個標記之間的內容,例如,可以將XML元素標記為價格、訂單編號或名稱。標記是對文檔存儲格式和邏輯結構的描述。在形式上,標記中可能包括注釋、引用、字符數(shù)據(jù)段、起始標記、結束標記、空元素、文檔類型聲明( DTD)和序言。

          XML文件的作用是可以定義數(shù)據(jù)交流的標準或系統(tǒng)配置參數(shù),有一段時間預測是可以替代HTML的標簽語言,但是后來發(fā)展不理想,沒有成為HTML網(wǎng)頁的替代方案。但是XML文件在數(shù)據(jù)交流中還是非常有用的,尤其是在進行數(shù)據(jù)交流標準的定義中,不同用戶按事先約定好的XML標簽格式傳遞數(shù)據(jù),雙方就可以交流數(shù)據(jù)。其規(guī)范性要強于json文件格式

          具體規(guī)則如下:

          1、必須有聲明語句。

          XML聲明是XML文檔的第一句,其格式如下:

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

          2、注意大小寫

          在XML文檔中,大小寫是有區(qū)別的。"<P>"和"<p>"是不同的標記。注意在寫元素時,前后標記的大小寫要保持一致。

          3、XML文檔有且只有一個根元素

          XML文檔必須有一個根元素,就是緊接著聲明后面建立的第一個元素,其他元素都是這個根元素的子元素,根元素完全包括文檔中其他所有的元素。根元素的起始標記要放在所有其他元素的起始標記之前;根元素的結束標記要放在所有其他元素的結束標記之后。例如

          <?xml version="1.0" encoding="utf-8"?>
          <data>
                   XXXXXX
          </data>

          4、屬性值使用引號

          在HTML代碼里面,屬性值可以加引號,也可以不加。但是XML規(guī)定,所有屬性值必須加引號(可以是單引號,也可以是雙引號,建議使用雙引號),否則將被視為錯誤。

          <?xml version="1.0" encoding="utf-8"?>
          		<data name="school_data">
          					XXXXXX
          		</data>

          5、所有的標記必須有相應的結束標記

          在HTML中,標記可以不成對出現(xiàn),而在XML中,所有標記必須成對出現(xiàn),有一個開始標記,就必須有一個結束標記,否則將被視為錯誤。

          <?xml version="1.0" encoding="utf-8"?>
          <data name=”school_data”>
          	<school name=”ncist”>
          		<myclass name="計算機B191">
                      <student id="001">
                          <realname>張一</realname>
                          <sex>男</sex>
                          <age>21</age>
                      </student>
                  </myclass>
          	</school>
          	<school name=”pku”>
          		<myclass name="物聯(lián)網(wǎng)B191">
                      <student id="001">
                          <realname>王一</realname>
                          <sex>女</sex>
                          <age>19</age>
                      </student>
                  </myclass>
          	</school>
          </data>
          

          6、所有的空標記也必須被關閉

          空標記是指標記對之間沒有內容的標記,比如"<img></img>"等標記。在XML中,規(guī)定所有的標記必須有結束標記。

          二、XMLSpy軟件介紹

          XMLSpy 是來自Altova的一款方便實用,功能強大的XML(標準通用標記語言的子集)編輯器。軟件支持WYSWYG,支持Unicode、多字符集,支持Well-formed和Validated兩種類型的XML文檔,支持NewsML等多種標準XML文檔的編輯,軟件在原來的基礎上增加了幾個很有用的功能,會讓XML代碼的處理更容易,是J2EE,.NET和數(shù)據(jù)庫開發(fā)人員不可缺少的高性能的開發(fā)工具。網(wǎng)上搜索需要的版本安裝就可以了。

          XMLSpy 軟件界面

          XMLSpy 編輯界面

          三、利用XMLSpy軟件編輯XML文件

          1、建立一個XML樣例文件

          首先利用任意文本編輯器,建立一個普通的XML文件,里面含有基本的XML數(shù)據(jù)結構。

          <?xml version="1.0" encoding="UTF-8" ?>
          <data>
              <school name="ncist001">
                  <myclass name="計算機001">
                      <student id="001">
                          <realname>張一</realname>
                          <sex>男</sex>
                          <age>21</age>
                      </student>
                  </myclass>
              </school>
          </data>
          

          2、利用XMLSpy軟件生成約束文件

          利用XMLSpy軟件打開此文件,分析生成約束XSD文件。這步很關鍵。會提示是否應用約束等,基本都是默認確認就可以了。軟件自動在XML文件中建立約束的語句。這種方法可以快速生成約束文件,在此基礎上進行修改,能夠快速完成約束文件的生成。

          帶有約束的XML文件

          生成約束文件

          xsd約束文件

          3、修改約束文件xsd

          軟件自動生成了約束文件xsd,但是這個約束文件有問題。主要是它采用扁平化方法,描述各個元素的層級關系。所謂扁平化描述,就是指描述本層和它所包含的下一層的元素。

          注意點:

          1  data是根目錄,它只描述的data的類型,和含有的下一級子元素。具體下一級子元素的詳細描述,又采用扁平化方法在下面描述了

          2  在描述中,元素的屬性數(shù)據(jù)類型都進行了約束,問題在于后面采用枚舉,限定的數(shù)據(jù)內容,因此需要把枚舉的內容刪除掉。

          3  在元素的描述中,沒有限定數(shù)據(jù)數(shù)量,默認就是1個。應該添加不限定。方法是自己寫,或者在添加一個元素,然后再生成約束文件,分析文件就可以了。

          xsd約束文件

          4、XML可視化

          XMLSpy軟件提供了一種可視化結構展示,非常方便查看自己的XML約束條件。

          xml可視化

          5、約束文件地址修改

          XML文件中引用的約束文件為絕對地址,不適合發(fā)布使用。把它修改為相對地址,xml和xsd文件在同一個文件夾中。

          xsd地址

          6、約束檢查

          XML約束檢查,如果是用XMLSpy軟件,如果有問題,會報錯,不讓保存。根據(jù)提示錯誤,可以修改xsd文件或者XML文件

          約束檢查結果

          四、pycharm軟件中生成約束xsd文件

          利用pycharm也可以生成XSD文件,但是文件的描述感覺沒有XMLSpy軟件描述的清晰,如下圖,不適用。Pycharm不能進行XML規(guī)則檢查。

          pycharm編輯xml

          xml文件

          五、Python讀寫XML文件

          常見的 XML 編程接口有 DOM 和 SAX,這兩種接口處理 XML 文件的方式不同,當然使用場合也不同。

          Python 有三種方法解析 XML,就是SAX,DOM,以及 ElementTree。

          1.SAX (simple API for XML )

          Python 標準庫包含 SAX 解析器,SAX 用事件驅動模型,通過在解析XML的過程中觸發(fā)一個個的事件并調用用戶定義的回調函數(shù)來處理XML文件。

          2.DOM(Document Object Model)

          將 XML 數(shù)據(jù)在內存中解析成一個樹,通過對樹的操作來操作XML。

          3.ElementTree(元素樹)

          ElementTree就像一個輕量級的DOM,具有方便友好的API。代碼可用性好,速度快,消耗內存少。

          注:因DOM需要將XML數(shù)據(jù)映射到內存中的樹,一是比較慢,二是比較耗內存,而SAX流式讀取XML文件,比較快,占用內存少,但需要用戶實現(xiàn)回調函數(shù)(handler)。

          代碼如下:


          主站蜘蛛池模板: 国产av一区最新精品| 国产福利在线观看一区二区| 综合无码一区二区三区| 久久精品免费一区二区三区| 国产麻豆媒一区一区二区三区| 中文字幕一区日韩在线视频| 国内精品视频一区二区三区| 激情亚洲一区国产精品| 亚洲日韩激情无码一区| 国产一区二区三区播放| 无码一区二区三区在线| 蜜臀AV无码一区二区三区| 老熟妇仑乱一区二区视頻| 亚洲日本va午夜中文字幕一区| 综合久久一区二区三区 | 亚洲午夜精品一区二区| 久久久久久一区国产精品| 国产婷婷色一区二区三区深爱网| 亚洲av无码一区二区三区在线播放| av无码免费一区二区三区| 日韩人妻无码一区二区三区综合部| 日本免费一区二区三区最新vr| 亚洲一区在线免费观看| 无码视频一区二区三区在线观看| 国产综合无码一区二区辣椒| 国模丽丽啪啪一区二区| 99久久精品国产高清一区二区 | 麻豆AV天堂一区二区香蕉| 精品国产一区二区三区AV| 午夜DV内射一区区| 相泽南亚洲一区二区在线播放| 相泽南亚洲一区二区在线播放 | 亚洲一区动漫卡通在线播放| 国产日韩精品视频一区二区三区| 亚洲日韩一区二区三区| 国产一区二区三区在线观看免费 | 亚洲福利电影一区二区?| 亚洲日本va一区二区三区| 在线电影一区二区三区| 国产一区二区三区樱花动漫| 亚洲综合无码一区二区痴汉 |