У меня есть XML в виде строки, которая содержит
<message>HELLO!</message>
Как я могу получить строку "Привет!" из XML-файле? Это должно быть до смешного легко, но я потерял. XML уже'т в док, это просто строка.
Используя помощи jdom:
String xml = "<message>HELLO!</message>";
org.jdom.input.SAXBuilder saxBuilder = new SAXBuilder();
try {
org.jdom.Document doc = saxBuilder.build(new StringReader(xml));
String message = doc.getRootElement().getText();
System.out.println(message);
} catch (JDOMException e) {
// handle JDOMException
} catch (IOException e) {
// handle IOException
}
С помощью Xerces DOMParser
:
String xml = "<message>HELLO!</message>";
DOMParser parser = new DOMParser();
try {
parser.parse(new InputSource(new java.io.StringReader(xml)));
Document doc = parser.getDocument();
String message = doc.getDocumentElement().getTextContent();
System.out.println(message);
} catch (SAXException e) {
// handle SAXException
} catch (IOException e) {
// handle IOException
}
С помощью как jaxp интерфейсы:
String xml = "<message>HELLO!</message>";
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = null;
try {
db = dbf.newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(xml));
try {
Document doc = db.parse(is);
String message = doc.getDocumentElement().getTextContent();
System.out.println(message);
} catch (SAXException e) {
// handle SAXException
} catch (IOException e) {
// handle IOException
}
} catch (ParserConfigurationException e1) {
// handle ParserConfigurationException
}
Вы также можете использовать инструменты, имеющиеся в базовой версии:
String msg = "<message>HELLO!</message>";
DocumentBuilder newDocumentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document parse = newDocumentBuilder.parse(new ByteArrayInputStream(msg.getBytes()));
System.out.println(parse.getFirstChild().getTextContent());
Вы можете сделать это с JAXB (реализация включен в Java на SE 6).
import java.io.StringReader;
import javax.xml.bind.*;
import javax.xml.transform.stream.StreamSource;
public class Demo {
public static void main(String[] args) throws Exception {
String xmlString = "<message>HELLO!</message> ";
JAXBContext jc = JAXBContext.newInstance(String.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
StreamSource xmlSource = new StreamSource(new StringReader(xmlString));
JAXBElement<String> je = unmarshaller.unmarshal(xmlSource, String.class);
System.out.println(je.getValue());
}
}
Выход
HELLO!
Один из вышеуказанных государств ответ для преобразования XML-строку в байты, которые не нужны. Вместо этого можно использовать методы фабрики и поставляем его с StringReader
.
String xmlStr = "<message>HELLO!</message>";
DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = db.parse(new InputSource(new StringReader(xmlStr)));
System.out.println(doc.getFirstChild().getNodeValue());
Там чтения XML, или изворотливые больше. Правильно будет с помощью соответствующего разбора документа.
Или... изворотливые будет использовать пользовательский текст разбора с wisuzu'ы ответ или с помощью регулярных выражений в Первомайскую.
Я думаю, что вы будете смотреть на строка класс, существует несколько способов сделать это. Насчет подстрока(интервал,интервал)
и помощи indexOf(инт)
lastIndexOf(инт)
?