2011-09-30 107 views
34

我想寫一個代碼,可以幫助我創建一個XML對象。例如,我會給一個字符串作爲函數的輸入,它會返回一個XMLObject。如何從Java中的字符串創建一個XML對象?

XMLObject convertToXML(String s) {} 

當我在網上搜索時,通常我看到了有關創建XML文檔的示例。所有我看到的有關創建XML並寫入文件並創建文件的內容。但我做了這樣的事情:

Document document = new Document(); 
Element child = new Element("snmp"); 
child.addContent(new Element("snmpType").setText("snmpget")); 
child.addContent(new Element("IpAdress").setText("127.0.0.1")); 
child.addContent(new Element("OID").setText("1.3.6.1.2.1.1.3.0")); 
document.setContent(child); 

您認爲這足以創建一個XML對象嗎?也可以請你幫我如何從XML中獲取數據?例如,我怎樣才能從該XML獲得IpAdress

謝謝大家很多

編輯1:其實現在我想,也許這將是更容易,我有一個像base.xml一個文件,我會寫的所有東西基本成例如:

<snmp> 
<snmpType><snmpType> 
<OID></OID> 
</snmp> 

然後用這個文件創建一個XML對象。你對此有何看法?

+0

給出XMLObject的完全限定名稱(FQN)。你在使用xmlbeans嗎? –

+0

好的,第一個問題:什麼是XMLObject?那是哪個圖書館? –

+0

XMLObject只是一個例子,我想要一個獲取字符串作爲參數的函數,然後它將返回一個XML對象。我正在使用jdom來實現。 – Ozer

回答

70

如果你可以創建一個字符串的XML,你可以輕鬆地將它轉換爲XML文檔對象如 -

String xmlString = "<?xml version=\"1.0\" encoding=\"utf-8\"?><a><b></b><c></c></a>"; 

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder builder; 
try { 
    builder = factory.newDocumentBuilder(); 
    Document document = builder.parse(new InputSource(new StringReader(xmlString))); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

您可以使用文檔對象和xml解析庫或xpath來獲取ip地址。

+0

據我所知「parse」返回一個DOM文檔對象,你將如何獲得這個代碼的SAX版本?感謝名單! – theexplorer

+0

如果沒有源代碼,我們想要創建一個新的Document對象,然後向其中添加子對象,那麼可能還是必須先創建根元素? –

10

嘗試像

public static Document loadXML(String xml) throws Exception 
{ 
    DocumentBuilderFactory fctr = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder bldr = fctr.newDocumentBuilder(); 
    InputSource insrc = new InputSource(new StringReader(xml)); 
    return bldr.parse(insrc); 
} 
相關問題