私が次のxmlを持っているとすると:
<div id="Main">
<div class="quote">
This is a quote and I don't want this text
</div>
<p>
This is content.
</p>
<p>
This is also content and I want both of them
</p>
</div>
div#Mainの内部テキストを単一ノードとして選択するのに役立つ「XPath」はありますが、 div.quoteのテキストを除外する必要があります。
「これはコンテンツです。これもコンテンツであり、両方が必要です」というテキストが必要です。
前もって感謝します
XPathをテストするためのコードは次のとおりです。HtmlAgilityPackで.NETを使用していますが、xPathはどの言語でも機能するはずです。
[Test]
public void TestSelectNode()
{
// Arrange
var html = "<div id=\"Main\"><div class=\"quote\">This is a quote and I don't want this text</div><p>This is content.</p><p>This is also content and I want both of them</p></div>";
var xPath = "//div/*[not(self::div and @class=\"quote\")]/text()";
var doc = new HtmlDocument();
doc.LoadHtml(html);
// Action
var node = doc.DocumentNode.SelectSingleNode(xPath);
// Assert
Assert.AreEqual("This is content.This is also content and I want both of them", node.InnerText);
}
xPathがまだ正しくないため、テストは明らかに失敗しました。
Test 'XPathExperiments/TestSelectNode' failed:
Expected values to be equal.
Expected Value : "This is content.This is also content and I want both of them"
Actual Value : "This is content."