操作XML文檔遇到的XMLNS問題及解決方案 (C# 和 PHP)

來源:互聯網
上載者:User

標籤:

原文:操作XML文檔遇到的XMLNS問題及解決方案 (C# 和 PHP)

不管是用 PHP 還是 C#, 在操作 XML 的時候我們除了一個節點一個節點去取值之外, 還有一個非常方便的運算式, 就是 XPATH   而昨晚在使用 XPATH 的時候, 遇到一個問題, 改了一個晚上才搞定, 差點沒吐血. 果然基礎知識要掌握紮實啊!!

假設有以下一份 XML 文檔:

 

 

我們要擷取所有歌曲的標題, 一般是使用以下的 XPATH 運算式:

代碼如下:/playlist/trackList/track/title

但是匹配的結果會讓你非常失望, 你會發現什麼也得不到. 於是我在這個問題上卡了好幾個小時, 最終萬能的 Google 告訴了我答案.
在第二行 playlist 那個節點, 有一個 XMLNS 屬性, 這個是 XML 的命名空間 (Namespace), 就是因為這個屬性的存在, 所以我們上面的 XPATH 就無效了. 怎麼辦? 答案是在程式中為我們的 XML 註冊命名空間.
使用 C# 給 XML 註冊命名空間和擷取歌曲標題:

代碼如下: XmlDocument xml = new XmlDocument(); xml.Load("music.xml"); XmlNamespaceManager xnm = new XmlNamespaceManager(xml.NameTable); xnm.AddNamespace("x", "http://xspf.org/ns/0/"); string xpath = "/x:playlist/x:trackList/x:track/x:title"; foreach (XmlNode xn in xml.SelectNodes(xpath, xnm)) { Console.WriteLine(xn.InnerText); }

 代碼如下:

$xml = simplexml_load_file(‘music.xml‘); $xml->registerXPathNamespace(‘x‘,‘http://xspf.org/ns/0/‘); $xpath = ‘/x:playlist/x:trackList/x:track‘; $result = $xml->xpath($xpath); foreach($result as $row){ echo $row->title; }

 

操作XML文檔遇到的XMLNS問題及解決方案 (C# 和 PHP)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.