a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C# > 正文

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

2020-01-24 03:43:22
字體:
來源:轉載
供稿:網友
而昨晚在使用 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);
}

使用 PHP 給 XML 注冊命名空間和獲取歌曲標題:
復制代碼 代碼如下:

$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;
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美一区二区三区电影 | 欧美日韩高清在线一区 | 日本一本视频 | 国产视频久久久久 | 四虎最新影视 | 精品久久一二三区 | 日本亚洲天堂 | www.国产| 欧美精品一区在线发布 | 一区二区三区在线播放 | 永久黄网站色视频免费观看w | 日韩在线一区二区 | 国产极品视频 | 99免费观看视频 | 久久国产精品久久 | 国产精品久久久久久久久 | 色精品视频| 国产视频精品视频 | 欧美高清在线一区 | 天天舔天天干 | aaa在线 | 五月婷在线观看 | 91精品在线观看入口 | www国产精品| 亚洲一区二区三区在线播放 | 羞羞网站在线 | 国产福利在线播放 | 亚洲精品乱码久久久久久不卡 | 午夜a v电影 | 日韩综合网 | 欧洲成人午夜免费大片 | 婷婷色综合 | 婷婷免费视频 | 国产av一级毛片 | 国产午夜精品一区二区三区 | 亚州黄色 | 有码在线 | 精品国产一区二区三区不卡蜜臂 | 成人激情视频在线播放 | а_天堂中文最新版地址 | 黄色精品视频 |