首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java解析XML字符串

Java解析XML字符串
EN

Stack Overflow用户
提问于 2014-09-09 21:17:49
回答 3查看 1.3K关注 0票数 -2

我有一个字符串,我试图从其中提取值,为了方便起见,我认为将字符串转换为文档,然后解析xml将是最好的方法,但我遇到了各种各样的问题!该字符串如下所示:

代码语言:javascript
复制
    <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){ }

EN

回答 3

Stack Overflow用户

发布于 2014-09-09 21:25:30

将字符串写入文本文件时,可以首先对其进行解析:

代码语言:javascript
复制
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;
}

然后从该文档中读出所有文本元素:

代码语言:javascript
复制
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());
    }
}
票数 0
EN

Stack Overflow用户

发布于 2014-09-09 22:32:07

使用JAXB lib:https://jaxb.java.net/

从您的XML创建模型,并阅读:

代码语言:javascript
复制
JAXBContext jaxbContext = JAXBContext.newInstance(YourModel.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();

StringReader reader = new StringReader("xml string here");
YourModel yourModel= (Person) unmarshaller.unmarshal(reader);

之后,您可以使用对象"YourModel“来读取您的值。

票数 0
EN

Stack Overflow用户

发布于 2018-08-04 04:34:16

当您知道节点名称时,这是获取节点值的一种非常简单的方法,并且它们不会重复:

代码语言:javascript
复制
String getXmlNodeValue(String xmlString, String nodeName){
    int start = xmlString.indexOf("<"+nodeName+">") + nodeName.length() + 2;
    int end = xmlString.indexOf("</"+nodeName+">");
    return xmlString.substring(start, end);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25745672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档