2011-09-30 75 views
34

Tôi đang cố viết một mã giúp tôi tạo một đối tượng XML. Ví dụ, tôi sẽ đưa ra một chuỗi như là đầu vào cho một hàm và nó sẽ trả về cho tôi một XMLObject.Cách tạo đối tượng XML từ Chuỗi trong Java?

XMLObject convertToXML(String s) {} 

Khi tôi tìm kiếm trên mạng, thường tôi thấy các ví dụ về cách tạo tài liệu XML. Vì vậy, tất cả những điều tôi đã thấy về việc tạo ra một XML và viết vào một tập tin và tạo ra các tập tin. Nhưng tôi đã làm điều gì đó tương tự:

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

Bạn có nghĩ là đủ để tạo đối tượng XML không? và bạn có thể vui lòng giúp tôi cách lấy dữ liệu từ XML không? Ví dụ, làm thế nào tôi có thể nhận được IpAdress từ XML đó?

Cảm ơn tất cả các bạn rất nhiều

EDIT 1: Trên thực tế bây giờ tôi nghĩ rằng có lẽ nó sẽ dễ dàng hơn nhiều cho tôi để có một tập tin như base.xml, tôi sẽ viết tất cả những điều cơ bản vào đó ví dụ:

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

và sau đó sử dụng tệp này để tạo đối tượng XML. Bạn nghĩ gì về điều này?

+0

đặt tên đầy đủ (FQN) của XMLObject. Bạn đang sử dụng xmlbeans? –

+0

Ok, câu hỏi đầu tiên: 'XMLObject' là gì? Thư viện nào vậy? –

+0

XMLObject chỉ là một ví dụ, tôi muốn một hàm nhận được một chuỗi như một tham số và sau đó nó sẽ trả về một đối tượng XML. Tôi đang sử dụng jdom để thực hiện. – Ozer

Trả lời

70

Nếu bạn có thể tạo một xml chuỗi bạn có thể dễ dàng chuyển đổi nó vào đối tượng tài liệu xml ví dụ -

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

Bạn có thể sử dụng đối tượng tài liệu và thư viện phân tích cú pháp xml hoặc xpath để lấy lại địa chỉ ip.

+0

vì tôi hiểu "phân tích" trả về đối tượng tài liệu DOM, bạn sẽ làm gì để nhận phiên bản SAX của mã này? thanx! – theexplorer

+0

Điều gì sẽ xảy ra nếu không có nguồn và chúng tôi muốn tạo một đối tượng Tài liệu mới và sau đó nối thêm con vào nó, Có thể hay chúng ta phải tạo phần tử gốc trước? –

10

thử một cái gì đó giống như

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); 
} 
Các vấn đề liên quan