我有这段文字:
<message id="dsds" to="test@test.com" type="video" from="test@test"><body>TESTTESTTEST</body><active xmlns="http://jabber.org"/></message>
我想得到 <body></body>
的一部分在这个字符串中。
在 java 中,我搜索并找到了 split,但它不能解决我的问题。如何获取 <body></body>
之间的文本在 Java 中?
最佳答案
最好使用像 SAXParser 或 DocumentBuilder 这样的解析器。您可以准确地获取标签并处理数据。当您有许多标签要处理时,它们会特别方便。
下面是一个使用 Parser 读取 body 标签的例子:
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
DefaultHandler handler = new DefaultHandler(){
String body = "";
boolean isBody = false;
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
if (qName.equalsIgnoreCase("body")) {
isBody = true;
}
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
if (isBody) {
body = new String(ch, start, length);
System.out.println("body : " + body);
}
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
if (qName.equalsIgnoreCase("body")) {
isBody = false;
}
}
};
saxParser.parse(new InputSource(new StringReader("<message id=\"dsds\" to=\"test@test.com\" type=\"video\" from=\"test@test\"><body id=\"dd\">TESTTESTTEST</body><active xmlns=\"http://jabber.org\"/></message>")), handler);
关于Java读取字符串的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27818706/