2011-12-13 8 views
12

XMLを取得してXML要素をドキュメントオブジェクトに変換し、既に作成されている要素の値と属性を取得する場合があります文字列をJavaのDOMドキュメントオブジェクトに変換するには?

ここでは、文字列をDOMに変換しようとしたコードを示しますドキュメントオブジェクト

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

しかし、この場合には、属性

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

たちはATTのための二重引用符を使用している場合、私たちは何ができるのない要素だけに有効ですリブート値 "値"。コンパイラはエラーを表示しています

xmlエンコーダとデコーダがこのシナリオを処理するためにある場合私にお勧めしますか?

+0

属性には問題はありません。どのような動作が見られますか? –

答えて

5

を参照してください\

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

またはその代わりに、単一引用符を使用し

String xmlString = "<element attribname='value' attribname1='value1'> pcdata</element>" 
2
との二重引用符をエスケープ

DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 
InputSource is = new InputSource(); 
is.setCharacterStream(new StringReader("<root><nod1></node1></root>")); 

Document doc = db.parse(is); 

を試すことができます

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. 

XML構造が複雑であっても、これはうまく機能します。

xmlStringがXMLに有効であることを確認してください。先頭にエスケープ文字を追加する必要があります。

主な問題は属性から来ていない可能性があります。

関連する問題