是否有来自.NET的XmlDocument.LoadXml()的Java等价物?

Osc*_*car 4 .net c# java xml xmldocument

.NETC#中,当尝试加载stringinto时xml,需要使用XmlDocumenttype from System.Xml并执行以下操作:

例如:

string xmlStr = "<name>Oscar</name>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(xmlStr);
Console.Write(doc.OuterXml);
Run Code Online (Sandbox Code Playgroud)

这看起来很简单,但我该怎么办Java呢?是否可以加载stringxml直接使用的东西,简短的像上面,避免执行这个其他方法?

提前致谢.

Yog*_*ngh 6

试试这个:

DocumentBuilderFactory documentBuildFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder doccumentBuilder = documentBuildFactory.newDocumentBuilder();
Document document = 
 doccumentBuilder.parse(new ByteArrayInputStream("<name>Oscar</name>".getBytes()));
Run Code Online (Sandbox Code Playgroud)

你可以遍历Oscar:

String nodeText = document.getChildNodes().item(0).getTextContent() ;         
System.out.println(nodeText);
Run Code Online (Sandbox Code Playgroud)

转换回来:

TransformerFactory tFactory =  TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
DOMSource domSource = new DOMSource(document);
//to print the string in sysout, System.out
StreamResult streamResult = new StreamResult(System.out);
transformer.transform(domSource, streamResult ); 
Run Code Online (Sandbox Code Playgroud)

要在String中获得结果:

DOMSource source = new DOMSource(document);
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
StreamResult result = new StreamResult(outStream);
transformer.transform(source, result);
String resultString = new String( outStream.toByteArray());
System.out.println(resultString);
Run Code Online (Sandbox Code Playgroud)