如何从字符串创建元素
How to create element from string
当我们尝试解析节点内容并转换为字符串时,生成的字符串内容如下所示,
&l t; rootNode &g t;
......
&l t;/rootNode &g t;
当我们尝试使用 JDOM 元素在 XML 中再次添加字符串内容时,它应该如下所示附加,而不是我们在没有 unicode 转换过程的情况下获得与上面所示相同的值.
<rootNode>
.....
</rootNode>
我们尝试了 StringUtils、XMLEscapeUtils,但没有得到预期的结果,有人可以指导我走正确的道路吗?
编辑
从 OP 的评论中添加代码:
String inputStr = "<rootnode></rootnode>";
org.jDom.Element Element e = new Element("parentnode");
e.addContent(inputStr);
问题: JDOM's Element.addContent(String)
正在将您的 inputStr
添加为 未解析的 字符串。
解决方案:相反,您需要将字符串解析为一个元素,然后将其添加到e
。您必须将其读入其自己的文档中,然后分离并移动它。这是一个草图:
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.jdom.Document;
import java.io.StringReader;
....
String inputStr = "<rootnode></rootnode>";
Element e = new Element("parentnode");
StringReader stringReader = new StringReader(inputStr);
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(stringReader);
Element rootE = doc.getRootElement();
e.addContent(rootE.detach()); // <== Add an Element rather than a String
当我们尝试解析节点内容并转换为字符串时,生成的字符串内容如下所示,
&l t; rootNode &g t;
......
&l t;/rootNode &g t;
当我们尝试使用 JDOM 元素在 XML 中再次添加字符串内容时,它应该如下所示附加,而不是我们在没有 unicode 转换过程的情况下获得与上面所示相同的值.
<rootNode>
.....
</rootNode>
我们尝试了 StringUtils、XMLEscapeUtils,但没有得到预期的结果,有人可以指导我走正确的道路吗?
编辑
从 OP 的评论中添加代码:
String inputStr = "<rootnode></rootnode>";
org.jDom.Element Element e = new Element("parentnode");
e.addContent(inputStr);
问题: JDOM's Element.addContent(String)
正在将您的 inputStr
添加为 未解析的 字符串。
解决方案:相反,您需要将字符串解析为一个元素,然后将其添加到e
。您必须将其读入其自己的文档中,然后分离并移动它。这是一个草图:
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.jdom.Document;
import java.io.StringReader;
....
String inputStr = "<rootnode></rootnode>";
Element e = new Element("parentnode");
StringReader stringReader = new StringReader(inputStr);
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(stringReader);
Element rootE = doc.getRootElement();
e.addContent(rootE.detach()); // <== Add an Element rather than a String