如何使用Java在String中获取XML标记的元素?

时间:2015-03-19 08:35:03

标签: java xml

我是XML解析的新手。我有以下示例XML:

<ErrorDetail><Error>Invalid cob date/FeedID </Error><InvalidColumn>FeesCom</InvalidColumn><InvalidColumn>Provis</InvalidColumn><InvalidColumn></InvalidColumn></ErrorDetail>

我需要一个Java代码,它在String中提供ErrorDetail标记的内容。看起来像:

String xmlString = "<Error>Invalid cob date/FeedID </Error><InvalidColumn>FeesCom</InvalidColumn><InvalidColumn>Provis</InvalidColumn><InvalidColumn></InvalidColumn>";

任何人都可以帮我吗?

3 个答案:

答案 0 :(得分:2)

我不确定我是否正确使用它,但我认为使用JDOM(2.0.2)这很简单......

String xml = "<ErrorDetail><Error>Invalid cob date/FeedID </Error><InvalidColumn>FeesCom</InvalidColumn><InvalidColumn>Provis</InvalidColumn><InvalidColumn></InvalidColumn></ErrorDetail>";
InputStream stream = new ByteArrayInputStream(xml.getBytes("UTF-8"));
Document doc = new SAXBuilder().build(stream);

System.out.println(new XMLOutputter().outputString(doc.getRootElement().getContent()));

...给我以下输出:

<Error>Invalid cob date/FeedID </Error><InvalidColumn>FeesCom</InvalidColumn><InvalidColumn>Provis</InvalidColumn><InvalidColumn />

答案 1 :(得分:0)

如果您依赖于稳定的xml结构,可以使用此示例:

public static String getErrorDetailsContent(String s) {
    int start = s.indexOf("<Error>");
    if (start == -1)
        // throw some exc
    int end = s.lastIndexOf("</InvalidColumn>");
    if (end == -1)
        // throw some exc
    return s.substring(start, end);
}

答案 2 :(得分:0)

以下代码为我提供了子元素,而无需手动获取子字符串。

NodeList nl = doc.getElementsByTagName("ErrorDetail").item(0).getChildNodes();
DOMSource source = null;
for (int x = 0; x < nl.getLength(); x++) {
   Node e = nl.item(x);
   if (e instanceof Element) {
     source = new DOMSource(e);
     transformer.transform(source, result);
   }
}