XML 簡介及用法詳解

来源:https://www.cnblogs.com/xiaowange/p/18074166
-Advertisement-
Play Games

XML 是一種用於存儲和傳輸數據的與軟體和硬體無關的工具。 什麼是XML? XML代表eXtensible Markup Language(可擴展標記語言)。XML是一種與HTML非常相似的標記語言。XML被設計用於存儲和傳輸數據。XML被設計成具有自我描述性。XML不執行任何操作,也許有點難理解, ...


XML 是一種用於存儲和傳輸數據的與軟體和硬體無關的工具。

什麼是XML?

XML代表eXtensible Markup Language(可擴展標記語言)。XML是一種與HTML非常相似的標記語言。XML被設計用於存儲和傳輸數據。XML被設計成具有自我描述性。XML不執行任何操作,也許有點難理解,但XML不執行任何操作。

XML示例

這是一張存儲為XML的給Tove的Jani的便簽:

<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

上面的XML相當自我描述:

  • 它包含了發件人信息
  • 它包含了收件人信息
  • 它有一個標題
  • 它有一個消息正文

但是,上面的XML仍然不執行任何操作。XML只是用標記包裝的信息。

必須有人編寫一段軟體來發送、接收、存儲或顯示它:

Note
To: Tove

From: Jani

Reminder
Don't forget me this weekend!

XML和HTML的區別

XML和HTML是出於不同目的而設計的:

  • XML被設計用於攜帶數據 - 專註於數據是什麼
  • HTML被設計用於顯示數據 - 專註於數據的呈現方式

XML標簽不像HTML標簽那樣是預定義的。XML語言沒有預定義的標簽。上面示例中的標簽(如<to><from>)在任何XML標準中都未定義。這些標簽是XML文檔的作者“創造”的。

HTML使用預定義標簽,如<p><h1><table>等。使用XML,作者必須定義標簽和文檔結構。

XML是可擴展的

大多數XML應用程式即使添加(或刪除)新數據也能正常工作。

想象一個應用程式,設計用於顯示note.xml的原始版本(<to> <from> <heading> <body>)。然後想象一個具有添加的<date><hour>元素以及刪除<heading>的新版本的note.xml

XML構造的方式使得舊版本的應用程式仍然可以工作:

<note>
  <date>2015-09-01</date>
  <hour>08:30</hour>
  <to>Tove</to>
  <from>Jani</from>
  <body>Don't forget me this weekend!</body>
</note>

舊版本

Note
To: Tove

From: Jani

Reminder
Don't forget me this weekend!

新版本

Note
To: Tove

From: Jani

Date: 2015-09-01 08:30

Don't forget me this weekend!

XML簡化事務

  • XML簡化數據共用
  • XML簡化數據傳輸
  • XML簡化平臺更改
  • XML簡化數據可用性

許多電腦系統包含以不相容格式存儲的數據。在不相容的系統(或升級的系統)之間交換數據對於Web開發人員來說是一項耗時的任務。必須轉換大量數據,並且通常會丟失不相容的數據。

XML以純文本格式存儲數據。這提供了一種與軟體和硬體無關的存儲、傳輸和共用數據的方式。

XML還使得擴展或升級到新的操作系統、新的應用程式或新的瀏覽器變得更容易,而不會丟失數據。

使用XML,數據可以供各種“閱讀機器”使用,如人類、電腦、語音機器、新聞源等。

XML的用途

XML在Web開發的許多方面都得到了應用。

XML分離數據與演示

XML通常用於將數據與演示分離。XML不包含有關如何顯示的任何信息。相同的XML數據可以在許多不同的演示情境中使用。因此,使用XML,數據和演示之間存在完全的分離。

XML通常與HTML搭配使用

在許多HTML應用程式中,XML用於存儲或傳輸數據,而HTML用於格式化和顯示相同的數據。

XML分離數據與HTML

在HTML中顯示數據時,當數據發生變化時不應該修改HTML文件。使用XML,數據可以存儲在單獨的XML文件中。通過幾行JavaScript代碼,您可以讀取一個XML文件並更新任何HTML頁面的數據內容。

Books.xml示例:

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

  <book category="cooking">
    <title lang="en">Everyday Italian</title>
    <author>Giada De Laurentiis</author>
    <year>2005</year>
    <price>30.00</price>
  </book>

  <book category="children">
    <title lang="en">Harry Potter</title>
    <author>J K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
  </book>

  <book category="web">
    <title lang="en">XQuery Kick Start</title>
    <author>James McGovern</author>
    <author>Per Bothner</author>
    <author>Kurt Cagle</author>
    <author>James Linn</author>
    <author>Vaidyanathan Nagarajan</author>
    <year>2003</year>
    <price>49.99</price>
  </book>

  <book category="web" cover="paperback">
    <title lang="en">Learning XML</title>
    <author>Erik T. Ray</author>
    <year>2003</year>
    <price>39.95</price>
  </book>

</bookstore>

事務數據

存在成千上萬種XML格式,用於描述不同行業的日常數據交易:

  • 股票和股份
  • 金融交易
  • 醫療數據
  • 數學數據
  • 科學測量
  • 新聞信息
  • 天氣服務

示例 XML

XMLNews是用於交換新聞和其他信息的規範。使用標準使得新聞製作者和新聞消費者更容易在不同的硬體、軟體和編程語言之間產生、接收和存檔任何類型的新聞信息。

一個示例XMLNews文檔:

<?xml version="1.0" encoding="UTF-8"?>
<nitf>
  <head>
    <title>Colombia Earthquake</title>
  </head>
  <body>
    <headline>
      <hl1>143 Dead in Colombia Earthquake</hl1>
    </headline>
    <byline>
      <bytag>By Jared Kotler, Associated Press Writer</bytag>
    </byline>
    <dateline>
      <location>Bogota, Colombia</location>
      <date>Monday January 25 1999 7:28 ET</date>
    </dateline>
  </body>
</nitf>

示例 XML 天氣服務

來自美國國家海洋和大氣管理局(NOAA)的XML國家氣象服務:

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

<credit>NOAA's National Weather Service</credit>
<credit_URL>http://weather.gov/</credit_URL>

<image>
  <url>http://weather.gov/images/xml_logo.gif</url>
  <title>NOAA's National Weather Service</title>
  <link>http://weather.gov</link>
</image>

<location>New York/John F. Kennedy Intl Airport, NY</location>
<station_id>KJFK</station_id>
<latitude>40.66</latitude>
<longitude>-73.78</longitude>
<observation_time_rfc822>Mon, 11 Feb 2008 06:51:00 -0500 EST
</observation_time_rfc822>

<weather>A Few Clouds</weather>
<temp_f>11</temp_f>
<temp_c>-12</temp_c>
<relative_humidity>36</relative_humidity>
<wind_dir>West</wind_dir>
<wind_degrees>280</wind_degrees>
<wind_mph>18.4</wind_mph>
<wind_gust_mph>29</wind_gust_mph>
<pressure_mb>1023.6</pressure_mb>
<pressure_in>30.23</pressure_in>
<dewpoint_f>-11</dewpoint_f>
<dewpoint_c>-24</dewpoint_c>
<windchill_f>-7</windchill_f>
<windchill_c>-22</windchill_c>
<visibility_mi>10.00</visibility_mi>

<icon_url_base>http://weather.gov/weather/images/fcicons/</icon_url_base>
<icon_url_name>nfew.jpg</icon_url_name>
<disclaimer_url>http://weather.gov/disclaimer.html</disclaimer_url>
<copyright_url>http://weather.gov/disclaimer.html</copyright_url>

</current_observation>

XML樹

XML文檔形成了一棵樹狀結構,從“根”開始分支到“葉子”。

XML樹結構

1

DOM節點樹

一個XML文檔可以被看作是一棵樹,這被稱為DOM(Document Object Model)節點樹。DOM節點樹以根節點為起點,分支到各個子節點,形成一個層級結構。

一個XML文檔的示例

上圖表示了XML中的圖書:

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
  <book category="cooking">
    <title lang="en">Everyday Italian</title>
    <author>Giada De Laurentiis</author>
    <year>2005</year>
    <price>30.00</price>
  </book>
  <book category="children">
    <title lang="en">Harry Potter</title>
    <author>J K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
  </book>
  <book category="web">
    <title lang="en">Learning XML</title>
    <author>Erik T. Ray</author>
    <year>2003</year>
    <price>39.95</price>
  </book>
</bookstore>

XML樹結構

XML文檔被形成為元素樹。

XML樹始於根元素,從根元素分支到子元素。

所有元素都可以有子元素(子元素):

<root>
  <child>
    <subchild>.....</subchild>
  </child>
</root>

術語父元素、子元素和兄弟元素用於描述元素之間的關係。

  • 父元素有子元素。
  • 子元素有父元素。
  • 兄弟元素是在同一級別上的子元素(兄弟姐妹)。

所有元素都可以有文本內容(例如:Harry Potter)和屬性(例如:category="cooking")。

自描述語法

XML使用了一種非常自描述的語法。

一個前導定義了XML版本和字元編碼:

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

下一行是文檔的根元素:

<bookstore>

下一行開始了一個<book>元素:

<book category="cooking">

<book>元素有4個子元素:<title><author><year><price>

<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>

下一行結束了<book>元素:

</book>

從這個例子中,您可以假設XML文檔包含了有關書店中書籍的信息。

XML語法規則

XML的語法規則非常簡單和邏輯。這些規則易於學習和使用。

XML文檔必須有一個根元素

XML文檔必須包含一個作為所有其他元素的父元素的根元素:

<root>
  <child>
    <subchild>.....</subchild>
  </child>
</root>

在這個例子中,<note> 是根元素:

<?xml version="1.0" encoding="UTF-8"?>
<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

XML前導部分

這一行被稱為XML前導部分:

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

XML前導部分是可選的。如果存在,它必須在文檔中首先出現。

所有XML元素必須有一個結束標簽

在XML中,省略結束標簽是非法的。所有元素必須有一個結束標簽:

<p>This is a paragraph.</p>
<br />

XML標簽區分大小寫

XML標簽是區分大小寫的。標簽<Letter>與標簽<letter>是不同的。

開放和關閉標簽必須使用相同的大小寫

<message>This is correct</message>

“開放和關閉標簽”通常被稱為“開始和結束標簽”。

XML元素必須嵌套正確

在XML中,所有元素必須在彼此之內正確嵌套:

<b><i>This text is bold and italic</i></b>

XML屬性值必須始終用引號括起來

XML元素可以具有類似HTML中的名稱/值對的屬性。在XML中,屬性值必須始終用引號括起來:

<note date="12/11/2007">
  <to>Tove</to>
  <from>Jani</from>
</note>

實體引用

在XML中,一些字元具有特殊的含義。為了避免解釋錯誤,需要使用實體引用:

<message>salary &lt; 1000</message>

XML中的註釋

在XML中編寫註釋的語法與HTML類似:

<!-- This is a comment -->

在XML中保留空白

XML不截斷多個空白,保留所有空白字元。

XML將新行存儲為LF

XML將新行存儲為LF(Line Feed)。

格式良好的XML

符合上述語法規則的XML文檔被稱為“格式良好”的XML文檔。

XML元素

一個XML文檔包含XML元素。

什麼是XML元素?

一個XML元素是從(包括)元素的開始標簽到(包括)元素的結束標簽的所有內容。

<price>29.99</price>

一個元素可以包含:

  • 文本
  • 屬性
  • 其他元素
  • 或以上的混合
<bookstore>
  <book category="children">
    <title>Harry Potter</title>
    <author>J K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
  </book>
  <book category="web">
    <title>Learning XML</title>
    <author>Erik T. Ray</author>
    <year>2003</year>
    <price>39.95</price>
  </book>
</bookstore>

在上面的例子中:

  • <title><author><year><price> 具有文本內容,因為它們包含文本(如29.99)。
  • <bookstore><book> 具有元素內容,因為它們包含元素。
  • <book> 具有一個屬性(category="children")。

空XML元素

沒有內容的元素被稱為空元素。

在XML中,可以這樣表示一個空元素:

<element></element>

也可以使用所謂的自閉合標簽:

<element />

這兩種形式在XML軟體(閱讀器、解析器、瀏覽器)中產生相同的結果。

空元素可以有屬性。

XML命名規則

XML元素必須遵循以下命名規則:

  • 元素名稱區分大小寫
  • 元素名稱必須以字母或下劃線開頭
  • 元素名稱不能以字母xml(或XML、Xml等)開頭
  • 元素名稱可以包含字母、數字、連字元、下劃線和句點
  • 元素名稱不能包含空格

除了xml,任何名稱都可以使用,沒有保留的單詞(除了xml)。

最佳命名實踐

  • 創建描述性的名稱,比如:<person><firstname><lastname>
  • 創建簡短和簡單的名稱,比如:<book_title> 而不是 <the_title_of_the_book>

命名約定

一些常用的XML元素命名約定:

  • 小寫:<firstname>(所有字母都小寫)
  • 大寫:<FIRSTNAME>(所有字母都大寫)
  • 蛇形命名:<first_name>(下劃線分隔單詞,常用於SQL資料庫)
  • 帕斯卡命名:<FirstName>(每個單詞的首字母大寫,C程式員常用)
  • 駱駝命名:<firstName>(每個單詞的首字母大寫,除了第一個,JavaScript中常用)

提示! 選擇您的命名風格,並始終保持一致!

XML元素是可擴展的

XML元素可以擴展以攜帶更多的信息。

看下麵的XML示例:

<note>
  <to>Tove</to>
  <from>Jani</from>
  <body>Don't forget me this weekend!</body>
</note>

假設我們創建了一個應用程式,從XML文檔中提取<to><from><body>元素以生成以下輸出:

MESSAGE
To: Tove
From: Jani

Don't forget me this weekend!

想象一下,XML文檔的作者向其添加了一些額外的信息:

<note>
  <date>2008-01-10</date>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

應用程式是否應該崩潰或中斷?

不應該。應用程式應該仍然能夠在XML文檔中找到<to><from><body>元素,並生成相同的輸出。

這是XML的優點之一。它可以在不破壞應用程式的情況下進行擴展。

XML屬性

XML元素可以有屬性,就像HTML一樣。

XML屬性必須用引號括起來

屬性值必須始終用引號括起來。可以使用單引號或雙引號。

對於一個人的性別,<person>元素可以這樣寫:

<person gender="female">

或者像這樣:

<person gender='female'>

如果屬性值本身包含雙引號,可以使用單引號,就像在這個例子中:

<gangster name='George "Shotgun" Ziegler'>

或者可以使用字元實體:

<gangster name="George &quot;Shotgun&quot; Ziegler">

XML元素 vs 屬性

在XML中,沒有規定何時使用屬性或何時使用元素的規則。

我最喜歡的方式

以下三個XML文檔包含完全相同的信息:

在第一個例子中使用了一個date屬性:

<note date="2008-01-10">
  <to>Tove</to>
  <from>Jani</from>
</note>

在第二個例子中使用了一個<date>元素:

<note>
  <date>2008-01-10</date>
  <to>Tove</to>
  <from>Jani</from>
</note>

在第三個例子中使用了一個擴展的<date>元素:(這是我最喜歡的)

<note>
  <date>
    <year>2008</year>
    <month>01</month>
    <day>10</day>
  </date>
  <to>Tove</to>
  <from>Jani</from>
</note>

避免使用XML屬性?

在使用屬性時要考慮的一些事項有:

  • 屬性不能包含多個值(元素可以)
  • 屬性不能包含樹結構(元素可以)
  • 屬性不容易擴展(以適應將來的更改)

不要陷入這種情況:

<note day="10" month="01" year="2008"
to="Tove" from="Jani" heading="Reminder"
body="Don't forget me this weekend!">
</note>

用於元數據的XML屬性

有時會為元素分配ID引用。這些ID可以用來識別XML元素,方式與HTML中的id屬性類似。以下是此示例:

<messages>
  <note id="501">
    <to>Tove</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>Don't forget me this weekend!</body>
  </note>
  <note id="502">
    <to>Jani</to>
    <from>Tove</from>
    <heading>Re: Reminder</heading>
    <body>I will not</body>
  </note>
</messages>

上述id屬性用於標識不同的註釋。它不是註釋本身的一部分。

我想在這裡說的是,元數據(關於數據的數據)應該存儲為屬性,而數據本身應該存儲為元素。

XML命名空間

XML命名空間提供了一種避免元素名稱衝突的方法。

名稱衝突

在XML中,元素名稱由開發人員定義。這通常導致在嘗試混合來自不同XML應用程式的XML文檔時發生衝突。

這個XML包含HTML表信息:

<table>
  <tr>
    <td>Apples</td>
    <td>Bananas</td>
  </tr>
</table>

這個XML包含有關桌子(傢具的一部分)的信息:

<table>
  <name>African Coffee Table</name>
  <width>80</width>
  <length>120</length>
</table>

如果將這些XML片段相加,將會出現名稱衝突。兩者都包含一個<table>元素,但這些元素具有不同的內容和含義。

用戶或XML應用程式將不知道如何處理這些差異。

使用首碼解決名稱衝突

在XML中,可以通過使用名稱首碼輕鬆避免名稱衝突。

這個XML包含有關HTML表和傢具的信息:

<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>

在上面的例子中,不會發生衝突,因為這兩個<table>元素具有不同的名稱。

XML命名空間 - xmlns屬性

在XML中使用首碼時,必須為首碼定義一個命名空間。可以通過元素的開始標記中的xmlns屬性來定義命名空間。

命名空間聲明具有以下語法:xmlns:prefix="URI"。

<root>

  <h:tr>
    <h:td>Apples</h:td>
    <h:td>Bananas</h:td>
  </h:tr>
</h:table>

  <f:name>African Coffee Table</f:name>
  <f:width>80</f:width>
  <f:length>120</f:length>
</f:table>

</root>

在上面的例子中:

  • 第一個<table>元素中的xmlns屬性為h:首碼提供了一個合格的命名空間。
  • 第二個<table>元素中的xmlns屬性為f:首碼提供了一個合格的命名空間。

當為元素定義命名空間時,所有具有相同首碼的子元素都與相同的命名空間相關聯。

命名空間也可以在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>

</root>

註意: 解析器不使用命名空間URI查找信息。使用URI的目的是為命名空間提供一個唯一的名稱。然而,公司通常將命名空間用作指向包含命名空間信息的網頁的指針。

統一資源標識符(URI)

統一資源標識符(URI)是一個字元串,用於標識互聯網資源。最常見的URI是統一資源定位符(URL),用於標識互聯網域地址。另一種不太常見的URI類型是統一資源名稱(URN)。

預設命名空間

為元素定義預設命名空間可以避免在所有子元素中使用首碼。它具有以下語法:xmlns="namespaceURI"。

這個XML包含HTML表信息:

  <tr>
    <td>Apples</td>
    <td>Bananas</td>
  </tr>
</table>

這個XML包含有關傢具的信息:

  <name>African Coffee Table</name>
  <width>80</width>
  <length>120</length>
</table>

實際使用中的命名空間

XSLT是一種可用於將XML文檔轉換為其他格式的語言。

下麵的XML文檔是用於將XML轉換為HTML的文檔。

命名空間"http://www.w3.org/1999/XSL/Transform"標識HTML文檔中的XSLT元素:

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

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

<xsl:template match="/">
<html>
<body>
  <h2>My CD Collection</h2>
  <table border="1">
    <tr>
      <th style="text-align:left">Title</th>
      <th style="text-align:left">Artist</th>
    </tr>
    <xsl:for-each select="catalog/cd">
    <tr>
      <td><xsl:value-of select="title"/></td>
      <td><xsl:value-of select="artist"/></td>
    </tr>
    </xsl:for-each>
  </table>
</body>
</html>
</xsl:template>

</xsl:stylesheet>

最後

為了方便其他設備和平臺的小伙伴觀看往期文章:

微信公眾號搜索:Let us Coding,關註後即可獲取最新文章推送

看完如果覺得有幫助,歡迎點贊、收藏、關註


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • adminpack 提供了大量支持功能,pgAdmin 和其他管理工具可以使用這些功能提供額外功能,例如遠程管理伺服器日誌文件。預設情況下,只有資料庫超級用戶才能使用所有這些功能,但其他用戶也可以使用 GRANT 命令使用這些功能。 我們先來看一下他支持的函數,可以通過 \dx+ adminpack ...
  • 在我們講解這個案例前,我們先來瞭解/預熱一下SQL Server的兩個概念:鍵查找(key lookup)和RID查找(RID lookup),通常,當查詢優化器使用非聚集索引進行查找時,如果所選擇的列或查詢條件中的列只部分包含在使用的非聚集索引和聚集索引中時,就需要一個查找(lookup)來檢索其 ...
  • 支持事務安全表(ACID),支持行鎖定和外鍵; MySQL事務的ACID特性是確保數據準確性和可靠性的基本原則,包括**原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)和持久性(Durability)**。具體如下: 1. **原子性(Atomicity) ...
  • 在MySQL 8.0中,可以通過創建自定義哈希函數來處理VARCHAR類型的欄位,以便用作分區鍵。下麵是一個簡單的示例,演示如何在MySQL8.0中創建自定義哈希函數來處理VARCHAR類型的欄位 分區後的表效果 方法一,自定義哈希函數,失敗而告終 創建自定義哈希函數: DELIMITER // C ...
  • 對於資料庫表中的大類,小類我們基本一直在使用id ,parentid的方式,今天發現了一種更清晰,更完美的解決方式。 SQL Server 2008版本之後的新類型HierarchyID 不知道大家有沒有瞭解, 該類型作為取代id, parentid的一種解決方案,讓人非常驚喜。 官方給的案例淺顯易 ...
  • 正處於企業指標建設過程中的你,是否經常遇到這樣的問題: • 各個部門獨立建設信息系統,由此產生的指標定義和計算方式各異,導致管理層無法快速準確地掌握整體業務運行狀況 • 缺乏對指標的統一管理和規範,產生重覆的指標計算工作,導致數據計算資源被過度消耗,增加運維成本和數據處理壓力 • 不知道指標體系建設 ...
  • GreatSQL里也能用上RocksDB引擎 1. 前言 RocksDB 是基於Facebook 開源的一種支持事務的、高度可壓縮、高性能的MyRocks存儲引擎,特別適用於高度壓縮和大容量的數據。以下是一些關鍵特點: 高性能: LSM 樹結構使得RocksDB在寫入密集型負載下表現卓越。它能夠處理 ...
  • 原文: Android 桌面小組件使用-Stars-One的雜貨小窩 藉助公司上的幾個項目,算是學習了Android桌面小組件的用法,記下踩坑記錄 基本步驟 1.創建小組件佈局 這裡需要註意的事,小組件佈局里不能使用自定義View,只能使用原生的組件,比如說LinearLayout,TextView ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...