Java 从XML节点获取HTML内容
我有一个REST服务返回XML,但是在一些XML内容中,有HTML标记。当我循环遍历XML节点时,似乎只有一个.getTextContent()方法可以剥离内容中的HTML。有没有其他方法可以在不剥离HTML的情况下获取内容 我创建的用于获取XML节点内容和属性的函数 来电者:Java 从XML节点获取HTML内容,java,xml,Java,Xml,我有一个REST服务返回XML,但是在一些XML内容中,有HTML标记。当我循环遍历XML节点时,似乎只有一个.getTextContent()方法可以剥离内容中的HTML。有没有其他方法可以在不剥离HTML的情况下获取内容 我创建的用于获取XML节点内容和属性的函数 来电者: String firstName = RESTHelper.getXMLProperty(xmlData, "rootNode/person/firstName"); 方法: public static String
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;
}
publicstaticstringgetxmlproperty(stringxml,stringsearchnodes){
字符串retVal=“”;
字符串[]nodeSplit=searchNodes.split(“/”);
if(xml.trim().length()==0)
返回返回;
尝试
{
DocumentBuilderFactory工厂=DocumentBuilderFactory.newInstance();
文件文件;
节点列表;
DocumentBuilder=factory.newDocumentBuilder();
doc=builder.parse(新的InputSource(新的StringReader(xml));
nList=doc.getElementsByTagName(nodeSplit[0]);
retVal=GetXMLNode(nList,searchNodes,0);
}捕获(例外e){
e、 printStackTrace();
}
返回返回;
}
私有静态字符串GetXMLNode(NodeList nl、字符串searchNodes、int项)
{
字符串retVal=null;
字符串findNode=searchNodes.split(“/”)[item];
int count=searchNodes.split(“/”).length;
项目++;
对于(int i=0;i0&&count>项){
节点属性=nnm.getNamedItem(searchNodes.split(“/”[item]);
if(属性!=null){
retVal=attribute.getTextContent();//只返回文本
打破
}
}
if(foundNode.equals(findNode)&&count>item){
retVal=GetXMLNode(nl.item(i).getChildNodes(),searchNodes,item);
打破
}else if(foundNode.equals(findNode)&&count==item){
retVal=nl.item(i).getTextContent();//只返回文本
打破
}
}
返回返回;
}
最后,我让REST服务为包含HTML的节点返回Base64,然后UI将其转换回来