我有一个字符串,我试图从其中提取值,为了方便起见,我认为将字符串转换为文档,然后解析xml将是最好的方法,但我遇到了各种各样的问题!该字符串如下所示:
<Messagexxx>
<Unit>
<contact>0</contact>
<text>Test Content</text>
<date>09-Sep-14 13:56</date>
<subject>Test Title</subject>
</Unit>
</Messagexxx>
有人能给我指出正确的方法来实现我从标签中读取数值的目标吗?
我尝试使用以下代码片段,但数组中的所有值都是
null! Document xml = null; Node T = null; try { xml = stringToDom(message); T = xml.getLastChild(); } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ParserConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(xml.getFirstChild() != null){ }
发布于 2014-09-09 21:25:30
将字符串写入文本文件时,可以首先对其进行解析:
private Document parse(String filename){
Document doc = null;
try {
DOMParser parser = new DOMParser();
parser.parse(filename);
doc = parser.getDocument();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return doc;
}
然后从该文档中读出所有文本元素:
public void extract (Document doc){
Node root = doc.getDocumentElement();
for (int i = 0; i< root .getChildNodes().getLength(); i++){
Node child = root.getChildNodes().item(i);
System.out.println(child.getTextContent());
}
}
发布于 2014-09-09 22:32:07
使用JAXB lib:https://jaxb.java.net/
从您的XML创建模型,并阅读:
JAXBContext jaxbContext = JAXBContext.newInstance(YourModel.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
StringReader reader = new StringReader("xml string here");
YourModel yourModel= (Person) unmarshaller.unmarshal(reader);
之后,您可以使用对象"YourModel“来读取您的值。
发布于 2018-08-04 04:34:16
当您知道节点名称时,这是获取节点值的一种非常简单的方法,并且它们不会重复:
String getXmlNodeValue(String xmlString, String nodeName){
int start = xmlString.indexOf("<"+nodeName+">") + nodeName.length() + 2;
int end = xmlString.indexOf("</"+nodeName+">");
return xmlString.substring(start, end);
}
https://stackoverflow.com/questions/25745672
复制相似问题