发布于2023-09-21 20:50 阅读(143) 评论(0) 点赞(25) 收藏(0)
如何为标签文本内容中的每个单词插入新标签?
如果我有一个像这样的xml:
<root>
<el> Text content for tag
</el>
</root>
我希望输出是:
<root>
<el> <new>Text</new> <new>content</new> <new>for</new> <new>tag</new>
</el>
</root>
任何想法?
您之前已经在这里问过这个问题的一部分:Add new node in XML file
基于此,我将使用与您在该问题中使用的示例类似的示例,该示例比此示例复杂一点,因为元素不包含纯文本,但可能具有混合内容(元素和文本)。
我在那里使用的 XML 是您之前发布的:
<nodes>
<RegDef>This <i>text</i> have i node.</RegDef>
<RegDef>This text doesn't have i atribute.</RegDef>
</nodes>
参考上一个问题。在这个问题中,我调用了一个方法,wrapWordsInContents()
该方法返回一个新元素,其单词包含在<w>
元素内。该新元素用于替换旧元素。这就是那个方法:
public static Element wrapWordsInContents(Element node, Document document) {
NodeList children = node.getChildNodes();
int size = children.getLength();
Element newElement = document.createElement(node.getTagName());
for(int i = 0; i < size; i++) {
if (children.item(i).getNodeType() == Document.ELEMENT_NODE) {
newElement.appendChild(wrapWordsInContents((Element)(children.item(i)), document));
} else { // text node
String text = children.item(i).getTextContent().trim();
if(text.isEmpty()) {
continue;
}
String[] words = text.split("\\s");
for(String word : words) {
Element w = document.createElement("w");
Node textNode = document.createTextNode(word);
w.appendChild(textNode);
newElement.appendChild(w);
}
}
}
return newElement;
}
请注意,它会递归地处理所有子元素,并用标签将它在其中找到的所有单词包装起来<w>
。如果要使用<new>
,只需替换"w"
为 即可"new"
。
如果您使用此方法运行上一个问题中的代码,您将获得一个新文档,该文档将生成一个 XML,该 XML 在序列化时将产生以下输出:
<nodes>
<RegDef><w>This</w><i><w>text</w></i><w>have</w><w>i</w><w>node.</w></RegDef>
<RegDef><w>This</w><w>text</w><w>doesn't</w><w>have</w><w>i</w><w>atribute.</w></RegDef>
</nodes>
对于您在此问题中发布的代码示例,您将使用:
NodeList elNodes = document.getElementsByTagName("el");
int size = elNodes.getLength();
for(int i = 0; i < size; i++) {
Element el = (Element)elNodes.item(i);
Element newEl = wrapWordsInContents(el, document);
Element parent = (Element)el.getParentNode(); // this is `<root>`
parent.replaceChild(newEl, el);
}
作者:黑洞官方问答小能手
链接:http://www.javaheidong.com/blog/article/677402/80eaa60f4a95ffe17ec7/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!