我有一些HTML,例如:的Html敏捷包:DescendantsOrSelf()沒有返回HTML元素
<%@ Page Title="About Us" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeBehind="ContentManagedTargetPage.aspx.cs" Inherits="xxx.ContentManagedTargetPage" %>
<%@ Register TagPrefix="CxCMS" Namespace="xxx.ContentManagement.ASPNET.UI" Assembly="xxx.ContentManagement.ASPNET" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<h2>
Content Managed
</h2>
<p>
Put content here.
[<CxCMS:ContentManagedPlaceHolder Key="keyThingy" runat="server" />]
</p>
</asp:Content>
而且我想找到CxCMS的所有實例:ContentManagedPlaceHolder元素。
我使用HTML敏捷包,這似乎是最合適的。
但是,儘管看了[微軟]文檔,我無法讓我的代碼正常工作。
我希望下面的工作:
string searchForElement = "CxCMS:ContentManagedPlaceHolder";
IEnumerable<HtmlNode> contentPlaceHolderHtmlNodes = HtmlDocument.DocumentNode.Descendants(searchForElement);
int count = contentPlaceHolderHtmlNodes.Count();
但我得不到任何回報。
如果我改變DescendantsOrSelf,我得到的文檔節點回來, 「#document」 - 這是不正確的:
string searchForElement = "CxCMS:ContentManagedPlaceHolder";
IEnumerable<HtmlNode> contentPlaceHolderHtmlNodes = HtmlDocument.DocumentNode.DescendantsOrSelf(searchForElement);
int count = contentPlaceHolderHtmlNodes.Count();
我也使用LINQ嘗試:
string searchForElement = "CxCMS:ContentManagedPlaceHolder";
IEnumerable<HtmlNode> contentPlaceHolderHtmlNodes = HtmlDocument.DocumentNode.DescendantsOrSelf().Where(q=>q.Name==searchForElement);
int count = contentPlaceHolderHtmlNodes.Count();
由於這些都不方法的工作,我轉移到使用SelectNodes,而不是:
string searchForElement = "CxCMS:ContentManagedPlaceHolder";
string xPath="//"+searchForElement // "//CxCMS:ContentManagedPlaceHolder"
var nodes= HtmlDocument.DocumentNode.SelectNodes(xPath);
這只是引發異常: 「需要命名空間管理器或XsltContext。 「我找不到任何將名稱空間管理添加到HtmlDocument對象的方法
我在這裏錯過了什麼?DescendantsOrSelf()方法在if使用「標準」HTML標籤,如「p」,但不是我所擁有的,當然它應該工作嗎?(它需要!)
是的,我正在使用ASPX源碼。它似乎在我迄今爲止所做的測試中發揮作用,在將小寫字母的東西寫出來之後!謝謝。 – 2010-06-16 18:56:07