2011-12-13 46 views
12

Tôi có một trường hợp như nhận XML và chuyển đổi các phần tử XML thành đối tượng tài liệu và nhận các giá trị phần tử và thuộc tính mà tôi đã được tạo ra làLàm thế nào để chuyển đổi chuỗi đối tượng DOM tài liệu trong java?

Đây là đoạn mã tôi đã cố chuyển đổi chuỗi thành DOM tài liệu đối tượng

String xmlString = " <r><e>d</e></r>"; 
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder builder = factory.newDocumentBuilder(); 
org.w3c.dom.Document document = builder.parse(new InputSource(new StringReader(xmlString)));  
TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
Transformer transformer = transformerFactory.newTransformer(); 
DOMSource source = new DOMSource(document); 
StreamResult result = new StreamResult(new StringWriter()); 
transformer.transform(source, result); 
String str1 = result.getWriter().toString(); 
System.out.println(str1); 

Nhưng trường hợp này có giá trị trong chỉ yếu tố không thuộc tính những gì chúng ta có thể làm gì nếu

String xmlString = "<element attribname="value" attribname1="value1"> pcdata</element>" 

chúng tôi đang sử dụng dấu ngoặc kép cho att giá trị "giá trị". Trình biên dịch đang hiển thị lỗi

Đề xuất tôi nếu có bất kỳ bộ mã hóa và bộ giải mã xml nào ở đó để xử lý các tình huống này không ??

+0

Sẽ ổn với các thuộc tính - bạn đang thấy hành vi nào? –

Trả lời

5

Hoặc thoát khỏi dấu ngoặc kép với \

String xmlString = "<element attribname=\"value\" attribname1=\"value1\"> pcdata</element>" 

hoặc sử dụng dấu nháy đơn thay vì

String xmlString = "<element attribname='value' attribname1='value1'> pcdata</element>" 
2
 public static void main(String[] args) { 
    final String xmlStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n"+ 
          "<Emp id=\"1\"><name>Pankaj</name><age>25</age>\n"+ 
          "<role>Developer</role><gen>Male</gen></Emp>"; 
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder builder; 
     try 
     { 
      builder = factory.newDocumentBuilder(); 
      Document doc = builder.parse(new InputSource(new StringReader(xmlStr))); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
1
DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 
Document document = db.parse(new ByteArrayInputStream(xmlString.getBytes("UTF-8"))); //remove the parameter UTF-8 if you don't want to specify the Encoding type. 

điều này làm việc tốt cho tôi mặc dù cấu trúc XML phức tạp.

Và hãy đảm bảo xmlString của bạn hợp lệ cho XML, hãy chú ý ký tự thoát sẽ được thêm "\" ở phía trước.

Vấn đề chính có thể không đến từ các thuộc tính.

Các vấn đề liên quan