0

多くのhtmlファイルを解析する必要があるプロジェクトに取り組んでいます。私はすべて<p>を1つから取得する必要があります<div class="story-body">

これまでのところ、私はこのコードを持っていて、それは私が望むことをしていますが、xpath 式を使用してこれを行う方法を知りたいと思っていました。私はこれを試しました:

textBody.SelectNodes ("What to put here? I tried //p but it gives every p in document not inside the one div")

しかし、成功せずに。何か案は?

public void Parse(){
   HtmlNode title = doc.DocumentNode.SelectSingleNode ("//h1[(@class='story-header')]");
   HtmlNode textBody = doc.DocumentNode.SelectSingleNode ("//div[(@class='story-body')]");

   XmlText textT;
   XmlText textS;

   string story = "";

   if(title != null){
     textT = xmlDoc.CreateTextNode(title.InnerText);
     titleElement.AppendChild(textT);
     Console.WriteLine(title.InnerText);
   }

   foreach (HtmlNode node in textBody.ChildNodes) {
      if(node.Name == "p" || (node.Name == "span" && node.GetAttributeValue("class", "class") == "cross-head")){
         story += node.InnerText + "\n\n";
         Console.WriteLine(node.InnerText);
      }
   }

   textS = xmlDoc.CreateTextNode (story);

   storyElement.AppendChild (textS);

   try
   {
        xmlDoc.Save("test.xml");            
   }
   catch (Exception e)
   {
        Console.WriteLine(e.Message);
   }
}
4

1 に答える 1