我是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>";
任何人都可以帮我吗?
答案 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);
}
}