多くの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);
}
}