Node.getTextContent()返回当前节点及其后代的文本内容。
有没有一种方法来获取当前节点的文本内容,而不是后代的文本。
例
<paragraph>
<link>XML</link>
is a
<strong>browser based XML editor</strong>
editor allows users to edit XML data in an intuitive word processor.
</paragraph>
预期产量
paragraph = is a editor allows users to edit XML data in an intuitive word processor.
link = XML
strong = browser based XML editor
我尝试下面的代码
String str = "<paragraph>"+
"<link>XML</link>"+
" is a "+
"<strong>browser based XML editor</strong>"+
"editor allows users to edit XML data in an intuitive word processor."+
"</paragraph>";
org.w3c.dom.Document domDoc = null;
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder;
try {
docBuilder = docFactory.newDocumentBuilder();
ByteArrayInputStream bis = new ByteArrayInputStream(str.getBytes());
domDoc = docBuilder.parse(bis);
} catch (ParserConfigurationException e1) {
e1.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
DocumentTraversal traversal = (DocumentTraversal) domDoc;
NodeIterator iterator = traversal.createNodeIterator(
domDoc.getDocumentElement(), NodeFilter.SHOW_ELEMENT, null, true);
for (Node n = iterator.nextNode(); n != null; n = iterator.nextNode()) {
String tagname = ((Element) n).getTagName();
System.out.println(tagname + "=" + ((Element)n).getTextContent());
}
但是它给出了这样的输出
paragraph=XML is a browser based XML editoreditor allows users to edit XML data in an intuitive word processor.
link=XML
strong=browser based XML editor
请注意, 段落 元素包含 链接 和 强 标签的文本,我不希望这样。请提出一些建议?
您想要的是过滤节点的子代,<paragraph>
使其仅保留具有节点类型的子代Node.TEXT_NODE
。
这是方法的示例,它将为您返回所需的内容
public static String getFirstLevelTextContent(Node node) {
NodeList list = node.getChildNodes();
StringBuilder textContent = new StringBuilder();
for (int i = 0; i < list.getLength(); ++i) {
Node child = list.item(i);
if (child.getNodeType() == Node.TEXT_NODE)
textContent.append(child.getTextContent());
}
return textContent.toString();
}
在您的示例中,这意味着:
String str = "<paragraph>" + //
"<link>XML</link>" + //
" is a " + //
"<strong>browser based XML editor</strong>" + //
"editor allows users to edit XML data in an intuitive word processor." + //
"</paragraph>";
Document domDoc = null;
try {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
ByteArrayInputStream bis = new ByteArrayInputStream(str.getBytes());
domDoc = docBuilder.parse(bis);
} catch (Exception e) {
e.printStackTrace();
}
DocumentTraversal traversal = (DocumentTraversal) domDoc;
NodeIterator iterator = traversal.createNodeIterator(domDoc.getDocumentElement(), NodeFilter.SHOW_ELEMENT, null, true);
for (Node n = iterator.nextNode(); n != null; n = iterator.nextNode()) {
String tagname = ((Element) n).getTagName();
System.out.println(tagname + "=" + getFirstLevelTextContent(n));
}
输出:
paragraph= is a editor allows users to edit XML data in an intuitive word processor.
link=XML
strong=browser based XML editor
它的作用是在节点的所有子节点上进行迭代,仅保留TEXT(因此不包括注释,节点等)并累积其各自的文本内容。
有中没有直接的方法Node
或Element
得到的只有在第一级别的文本内容。
问题内容: 使用pyqt4和python 2.6,我正在使用qcombobox提供选项列表。我在使用所选选项时遇到问题。我已经能够使用的信号选择了该选项时触发的方法,但问题是,当用户点击运行,其中几个组合框的内容需要加以考虑。因此,基本上我需要将组合框的选定内容作为字符串获取。到目前为止,我只能使用此功能: 得到这个: 当我真正想要的只是“测试选择”位时,有什么想法吗?我的组合框是这样制作的: 问
问题内容: 我有一段这样的HTML: 我有一个与此HTML匹配的WebElement。如何从中仅提取“标题”?方法.getText()返回“ Title \ nAuthor”。 问题答案: 您无法在WebDriver API中执行此操作,而必须在代码中执行。例如: 请注意,结尾的换行符实际上是元素文本的一部分,因此,如果您不想要它,则需要将其删除。
本文向大家介绍jquery 获取 outerHtml 包含当前节点本身的代码,包括了jquery 获取 outerHtml 包含当前节点本身的代码的使用技巧和注意事项,需要的朋友参考一下 在开发过程中,jQuery.html() 是获取当前节点下的html代码,并不包含当前节点本身的代码,然后我们有时候确需要,找遍jQuery api文档也没有任何方法可以拿到。 看到有的人通过parent().h
问题内容: 我尝试使用输入获得当前选择的文本,但我总是得到一个空字符串: 结果成: 使用angularjs.org作为目标站点的完整可重复测试: 请注意,我实际上看到输入的文本是用COMMAND +“ a”选择的。 我究竟做错了什么? 使用量角器2.5.1,Firefox 41。 问题答案: 不适用于在元素中选择的文本,但不适用于在页面中对元素进行的选择。 您可以使用和这样的: 您可能应该为此创建
使用Python 3。 假设: 如果我这样做: elem.text包含"文本其他" 如果我这样做:
首先,我正在为JavaScript创建一个库,但我不能使用jQuery。我试图获取一个HTML元素的文本内容,而不包含其子元素的文本内容。 innerText和textContent属性都没有提供所需的内容,请帮助。