Создать новый объект 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();
Если у вас есть еще вопросы, не стесняйтесь, дайте мне знать.