0

我正在使用 HtmlAgilityPack 从字符串中创建一个 htmldocument,例如:

   HtmlDocument updoc = new HtmlDocument();
   updoc.load(stringContents);

现在我想将 HtmlNodes 作为 XElement 的子级插入。我试过 :

   XDocument xdoc = XDocument.load(path);
   XElement body = xdoc.Descendants(ns + "body").Single();
   body.Add(updoc.GetElementbyId("h"));
   body.Add(updoc.GetElementbyId("m"));
   body.Add(updoc.GetElementbyId("f"));

但结果只会是对象名称(HtmlNodeAgilityPack,..),不起作用。基本上我正在尝试使用 HtmlAgilityPack 与 linq to xml 的组合。这可能吗 ?

4

2 回答 2

0

我只是在谷歌上搜索东西,所以这可能不适合你。但是您需要使用返回的HtmlNodeGetElementbyId()的属性来创建您的元素。

所以是这样的:

HtmlNode node = updoc.GetElementbyId("h");
XElement e;
body.Add(e = new XElement(node.Name, XElement.Parse(node.InnerHtml)));

如果节点有HtmlAttribute (s),添加它们如下:

foreach(HtmlAttribute att in node.Attributes)
{
    e.Add(new XAttribute(att.Name, att.Value));
}
于 2012-07-31T17:31:09.210 回答
-1

为什么不只使用 StringBuilder 生成您的 xml 并使用XDocument.Parse(string)解析它

Example :

StringBuilder xmlBuilder = new StringBuilder();
//Build xml with the builder
XDocument xDoc = XDocument.Parse(xmlBuilder.ToString());
于 2012-07-31T16:29:10.847 回答