私はナッチで遊んでいます。私はDOM構造内の特定のノードを検出し、ノードの周りからテキストデータを抽出することも含む何かを書こうとしています。例えば親ノードからのテキスト、兄弟ノードなど。私はいくつかの例を研究して読んだ後、画像ノードに対してこれを行うプラグインを作成しようとしました。コードの一部ノードの周囲のテキストを取得する方法は?
if("img".equalsIgnoreCase(nodeName) && nodeType == Node.ELEMENT_NODE){
String imageUrl = "No Url";
String altText = "No Text";
String imageName = "No Image Name"; //For the sake of simpler code, default values set to
//avoid nullpointerException in findMatches method
NamedNodeMap attributes = currentNode.getAttributes();
List<String>ParentNodesText = new ArrayList<String>();
ParentNodesText = getSurroundingText(currentNode);
//Analyze the attributes values inside the img node. <img src="xxx" alt="myPic">
for(int i = 0; i < attributes.getLength(); i++){
Attr attr = (Attr)attributes.item(i);
if("src".equalsIgnoreCase(attr.getName())){
imageUrl = getImageUrl(base, attr);
imageName = getImageName(imageUrl);
}
else if("alt".equalsIgnoreCase(attr.getName())){
altText = attr.getValue().toLowerCase();
}
}
private List<String> getSurroundingText(Node currentNode){
List<String> SurroundingText = new ArrayList<String>();
while(currentNode != null){
if(currentNode.getNodeType() == Node.TEXT_NODE){
String text = currentNode.getNodeValue().trim();
SurroundingText.add(text.toLowerCase());
}
if(currentNode.getPreviousSibling() != null && currentNode.getPreviousSibling().getNodeType() == Node.TEXT_NODE){
String text = currentNode.getPreviousSibling().getNodeValue().trim();
SurroundingText.add(text.toLowerCase());
}
currentNode = currentNode.getParentNode();
}
return SurroundingText;
}
これは正しく動作していないようです。 imgタグが検出され、イメージ名とURLが取得されますが、それ以上のヘルプはありません。 getSurroundingTextモジュールはあまりにも醜いように見えますが、私は試しましたが、改善できませんでした。イメージに関連する可能性のあるテキストをどこからどのように抽出すればよいのか、明確なアイデアはありません。助けてください?