我有一个REST服务,它返回XML,但在某些XML内容中,有HTML标记。当我遍历XML节点时,似乎只有一个.getTextContent()方法可以剥离内容中的HTML。是否有其他方法可以在不剥离HTML的情况下获取内容?
我创建的用于获取XML节点内容和属性的函数。
呼叫者:
String firstName = RESTHelper.getXMLProperty(xmlData, "rootNode/person/firstName");
方法:
public static String getXMLProperty(String xml, String searchNodes) {
String retVal = "";
String[] nodeSplit = searchNodes.split("/");
if(xml.trim().length()==0)
return retVal;
try
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
Document doc;
NodeList nList;
DocumentBuilder builder = factory.newDocumentBuilder();
doc = builder.parse( new InputSource( new StringReader( xml )) );
nList = doc.getElementsByTagName(nodeSplit[0]);
retVal = GetXMLNode(nList, searchNodes, 0);
} catch (Exception e) {
e.printStackTrace();
}
return retVal;
}
private static String GetXMLNode(NodeList nl, String searchNodes, int item)
{
String retVal = null;
String findNode = searchNodes.split("/")[item];
int count = searchNodes.split("/").length;
item++;
for(int i=0; i<nl.getLength(); i++) {
String foundNode = nl.item(i).getNodeName();
NamedNodeMap nnm = nl.item(i).getAttributes();
if(nnm!=null && nnm.getLength()>0 && count>item) {
Node attribute = nnm.getNamedItem(searchNodes.split("/")[item]);
if(attribute!=null) {
retVal = attribute.getTextContent(); //returns only text
break;
}
}
if(foundNode.equals(findNode) && count>item) {
retVal = GetXMLNode(nl.item(i).getChildNodes(), searchNodes, item);
break;
} else if(foundNode.equals(findNode) && count==item) {
retVal = nl.item(i).getTextContent(); //returns only text
break;
}
}
return retVal;
}
答案 0 :(得分:0)
我最终得到了REST服务,为其中包含HTML的节点返回Base64,然后UI将其转换回来。