2015-03-19 90 views
0

我是新來的XML解析。我有以下示例XML:如何使用Java獲取String中XML標記的元素?

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

我需要一個Java代碼,這使我ErrorDetail標籤的內容的String。東西看起來像:

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

任何人都可以幫助我嗎?

+0

你試過了什麼? – hanumant 2015-03-19 08:36:21

+0

我試圖使用基本的解析方法,但都給我標籤的價值。但我需要的是一個帶有子標籤及其值的字符串。 – 2015-03-19 08:44:38

+0

沒有更多的背景知識,很難知道你想要做什麼。我建議閱讀JAXP,特別是XPath。 – 2015-03-19 08:45:08

回答

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); 
    } 
} 
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 /> 
+0

感謝您的回答。但是我的要求是,我有一個主要的XML,其中ErrorDetails作爲主XML的子標記,而ErrorDetail中包含其他子標記。當我使用JAXB解析它時,我將ErrorDetail作爲一個java類來使用。我需要的是,ErrorDetail標籤的字符串作爲字符串。在給定的答案中,你已經將XML視爲一個字符串,我猜。在這種情況下,我必須首先將我生成的java類轉換爲XML然後轉換爲String。是對的嗎 ? – 2015-03-19 09:55:11

+0

@SuchithraUS你能否用這些信息更新你的_question_。提出半個問題可能會讓你得到一半答案。請發佈你的**完整**問題 - 最好有一個說明性的例子。 – 2015-03-19 10:03:19

+0

我完全同意@BoristheSpider,你最近的評論爲這個問題增加了有用的信息。我認爲這個例子http://blog.bdoughan.com/2011/04/xmlanyelement-and-non-dom-properties.html將幫助你...他們從客戶那裏得到生物標籤作爲一個字符串使用JAXB XmlAnyElement註釋。 – mle 2015-03-19 10:21:34

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); 
}