Tôi đang cố gắng phân tích cú pháp nguồn cấp dữ liệu Atom theo chương trình. Tôi có XML nguyên tử được tải xuống dưới dạng chuỗi. Tôi có thể tải XML vào một số XmlDocument
. Tuy nhiên, tôi không thể duyệt qua tài liệu bằng XPath. Bất cứ khi nào tôi thử, tôi nhận được null
.Không có nút nào được chọn từ tài liệu XML Atom bằng XPath?
Tôi đã sử dụng thức ăn chăn nuôi Atom này như một thử nghiệm: http://steve-yegge.blogspot.com/feeds/posts/default
Calling SelectSingleNode()
luôn trả null
, trừ khi tôi sử dụng "/
". Dưới đây là những gì tôi đang cố gắng ngay bây giờ:
using (WebClient wc = new WebClient())
{
string xml = wc.DownloadString("http://steve-yegge.blogspot.com/feeds/posts/default");
XmlNamespaceManager nsMngr = new XmlNamespaceManager(new NameTable());
nsMngr.AddNamespace(string.Empty, "http://www.w3.org/2005/Atom");
nsMngr.AddNamespace("app", "http://purl.org/atom/app#");
XmlDocument atom = new XmlDocument();
atom.LoadXml(xml);
XmlNode node = atom.SelectSingleNode("//entry/link/app:edited", nsMngr);
}
tôi nghĩ rằng nó có thể đã được vì XPath của tôi, vì vậy tôi cũng đã thử một truy vấn đơn giản của nút gốc kể từ khi tôi biết gốc nên làm việc:
// I've tried both with & without the nsMngr declared above
XmlNode node = atom.SelectSingleNode("/feed");
Không có vấn đề gì tôi làm, có vẻ như nó không thể chọn bất cứ điều gì. Rõ ràng là tôi đang thiếu một cái gì đó, tôi chỉ không thể tìm ra cái gì. Tôi cần phải làm gì để làm cho XPath hoạt động trên nguồn cấp dữ liệu Atom này?
EDIT
Mặc dù câu hỏi này có một câu trả lời, tôi phát hiện ra câu hỏi này có gần như chính xác lặp lại: SelectNodes not working on stackoverflow feed
thể trùng lặp của [SelectNodes không làm việc trên thức ăn stackoverflow] (http://stackoverflow.com/questions/24734/selectnodes-not-working-on-stackoverflow-feed) –