Создать новый объект CsQuery без наследования

Прямо к вопросу:

У меня есть объект CsQuery с некоторыми данными.

 CQ html=new CQ("<div id='wrapper'> <p id='getIt'></p> </div>");

Я хочу получить p и назначить его новому объекту CQ:

 Cq newHtml=html["p"];

Когда я это делаю, он также наследует исходный DIV. Как я могу сделать элемент p быть "корнем". ?

Я пытался все:

после html.MakeRoot(), если я использую.Select(), он все равно возвращает DIV.

Также я попытался использовать функцию .Find (она ищет в выбранном элементе), но это не решает мою проблему, потому что я использую стороннюю библиотечную функцию, которая использует .Select()...

Я знаю, что могу сделать что-то подобное

    CQ html=new CQ(html["p"].RenderSelection());

Но это отчасти....

Спасибо!

1 ответ

Решение

Прежде всего, я скромно предлагаю новый синтаксис создания 1.3 поверх старого:

CQ html=CQ.CreateFragment("<div id='wrapper'> <p id='getIt'></p> </div>");

Теперь, как вы и хотели, мы хотим получить внутренний элемент p, а затем создать новый контекст DOM, мы можем сделать это, снова вызвав метод конструирования. Я думаю, что код будет проще:)

 CQ html = CQ.CreateFragment("<div id='wrapper'> <p id='getIt'>Hello</p> </div>");
 //Create a _new_ context
 CQ newHtml=CQ.CreateFragment(html["p"]);
 newHtml.Text("World");
 Console.WriteLine("{0} {1}",html["p"].Text(),newHtml.Text());//Hello World
 Console.Read();

Если у вас есть еще вопросы, не стесняйтесь, дайте мне знать.

Другие вопросы по тегам