나는다른 숨겨진 범위를 포함하는 범위에서 내부 텍스트를 가져 오는 방법?
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>Page for test</title>
</head>
<body>
<div class="r_tr">
<span class="r_rs">Inner text<span class="otherSpan" style="display: none">text</span></span>
</div>
</body>
</html>
내가 "내부 텍스트"를 얻으려면 몇 가지 테스트 HTML 페이지를 가지고있다. HtmlAgilityPack을 사용하고 있습니다. 나는이 방법
public string GetInnerTextFromSpan(HtmlDocument doc)
{
const string rowXPath = "//*[@class=\"r_tr\"]";
const string spanXPath = "//*[@class=\"r_rs\"]";
string text = null;
HtmlNodeCollection rows = doc.DocumentNode.SelectNodes(rowXPath);
foreach(HtmlNode row in rows)
{
text = row.SelectSingleNode(spanXPath).InnerText;
Console.WriteLine("textL {0}", text);
}
return text;
}
하지만이 방법의 반환 "내부 textText 텍스트"를 작성합니다. 내가
[Test]
public void TestGetInnerTextFromSpan()
{
var client = new PromtTranslatorClient();
var doc = new HtmlDocument();
doc.Load(@"testPage.html");
var text = client.GetInnerTextFromSpan(doc);
StringAssert.AreEqualIgnoringCase("Inner text", text);
}
내 문제를 설명하고
Expected string length 10 but was 14. Strings differ at index 10.
Expected: "Inner text", ignoring case
But was: "Inner texttext"
---------------------^
결과는 내가 그것은 당신이 전체 문서의 첫 번째'r_rs' 요소를 선택했다 밝혀 "\ r에 \ n" – BILL
이며, 전체 문서에서 첫 번째 텍스트 노드를 선택했습니다 -이 문제를 해결하기 위해 내 대답을 우습게 보았습니다. – Rawling