我正在寻找一种方法来解析文本中的元素。
例如,我有以下xml
<Elem1>
<Elem1.1>{some text} <newLine/> {some text}</Elem1.1>
</Elem1>
所以我可以使用Elem1.1元素,但是当我在节点上调用.getTextContent()时,我从它返回{some text} {some text}(因此标记基本上已被删除)。< / p>
如何获取新行,以便我可以用我在xml中解析的json对象中的\ n替换它?
这基本上就是我现在所拥有的
NodeList nodeList = document.getElementsByTagName("Elem1");
for(int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
NodeList nodeList2 = ((Element)node).getElementsNyTagName("Elem1.1");
for(int j = 0; j < nodeList2.getLength(); j++) {
Element elem11 = (Element)nodeList2.item(j);
// Add elem11.getTextContent() to an object and later use GSON to convert to Json string and save to file
}
}
谢谢, DMAN
答案 0 :(得分:1)
不要使用getTextContent()
(这可能很明显)。只使用正常的dom遍历处理子节点。收集文本节点并在遇到它们时转换其他元素,将所有元素组合到一个StringBuilder中。
答案 1 :(得分:-1)
.getTextContent()仅提供元素及其子元素的文本内容。如果需要xml内容,可以将元素转换回xml并写出为字符串。示例代码..
NodeList nodeList = dom.getElementsByTagName("Elem1");
Transformer transformer = TransformerFactory.newInstance().newTransformer();
for(int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
NodeList nodeList2 = ((Element)node).getElementsByTagName("Elem1.1");
for(int j = 0; j < nodeList2.getLength(); j++) {
Element elem11 = (Element)nodeList2.item(j);
StreamResult result = new StreamResult(new StringWriter());
DOMSource source = new DOMSource(elem11);
transformer.transform(source, result);
String xmlString = result.getWriter().toString();
System.out.println(xmlString.substring("<?xml version=\"1.0\" encoding=\"UTF-8\"?>".length()));
// Add elem11.getTextContent() to an object and later use GSON to convert to Json string and save to file
}
}