早上,你怎么能从这个xml项目(描述)中只得到txt?
var dynamic = 5;
var a = storelocatorjstext.nostores;
var b = ???;
我的代码现在是
<description><![CDATA[<b>
<font color="#000000">hello world...</font>
</b>]]></description>
打印结果为:
if (cureent.getNodeName().equalsIgnoreCase("description")){
item.setDescription(cureent.getTextContent());
这就是我需要打印的内容:
<![CDATA[<b><font color="#000000">hello world...</font></b>]]>
全部谢谢
答案 0 :(得分:0)
可能有一个解析器,你可以使用它,但我认为一个简单的正则表达式应该完成工作:
String textContent = cureent.getTextContent();
String stripped = textContent.replaceAll("^<!\\[CDATA\\[|\\]\\]>$|<[^>]*>","");
item.setDescription(stripped);
以下是上面使用的模式的细分:
"^<!\\[CDATA\\[" // find "<![CDATA[" at beginning
+"|" // or
+"\\]\\]>$" // find "]]>" at ending
+"|" // or
+"<[^>]*>" // every tag from "<" up to ">"
当然,正如评论者提醒我们的那样,如果您有嵌套标签,即上面的简单正则表达式将会失败,即“&gt;”出现在某个实际上没有关闭标签的地方。如果这种类型的数据是可能的,那么最好使用真正的解析器,例如Jsoup。
答案 1 :(得分:0)
由于您的输入文件不是格式良好的XML,因此我们无法使用DocumentBuilder
类将其解析为XML。
因此,我们需要通过将其作为纯文本文件处理来破解它。
以下是我的尝试:
BufferedReader br = null;
FileReader fr = null;
try {
fr = new FileReader("D:\\workspace\\Test\\Trial.xml"); // Put your text here
br = new BufferedReader(fr);
String sCurrentLine;
StringBuffer totalString = new StringBuffer();
while ((sCurrentLine = br.readLine()) != null) {
totalString.append(sCurrentLine);
}
String condensedString = totalString.substring(totalString.indexOf("<font color="),
totalString.indexOf("</font>"));
String moreCondensedString = condensedString.replaceAll("[0-9]", "").replaceAll("#", "");
System.out.println(moreCondensedString.substring(moreCondensedString.indexOf('>') + 1));
} catch (IOException e) {
e.printStackTrace();
}
这里我首先通过从<font color=
和</font>
标记中剪切字符串来压缩字符串。
然后我替换了所有numbers
和special characters
然后我通过从'>'
希望它有所帮助!
答案 2 :(得分:0)
试试这个
if (cureent.getNodeName().equalsIgnoreCase("description")){
item.setDescription(cureent.getTextContent().replaceAll("<.*?>", ""););
答案 3 :(得分:0)
我想出了一个使用Jsoup的解决方案,它适用于您的示例输入。但建议使用各种输入进行测试。
public static void main(String[] args) throws Exception {
String xml = "<description><![CDATA[<b>\r\n" +
"<font color=\"#000000\">hello world...</font>\r\n" +
"</b>]]></description>";
Document d = Jsoup.parse(xml);
String text = extractText(d.getElementsByTag("description").get(0).text());
System.out.println(text);
}
private static String extractText(String xml) {
Document d = Jsoup.parse(xml);
d = Jsoup.parse(xml);
if(!xml.equals(d.text())){
return extractText(d.text());
}
return d.text();
}