繁体   English   中英

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

[英]Is there a Java equivalent for XmlDocument.LoadXml() from .NET?

.NET C#中,当尝试将string加载到xml ,需要使用System.Xml XmlDocument类型并执行以下操作:

例如:

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

这看起来很简单,但我怎么能用Java做到这一点? 是否可以使用直接,简短和简单的东西将string加载到xml ,并避免为此实现其他方法?

提前致谢。

尝试这个:

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

你可以通过以下方式遍历Oscar

String nodeText = document.getChildNodes().item(0).getTextContent() ;         
System.out.println(nodeText);

转换回来:

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

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

您可以选择Java中的树模型 - DOM,XOM,JDOM,DOM4J。 许多人(包括上面的Singh)默认使用DOM,因为它包含在JDK中,但它可能是最糟糕的,主要是因为它是最古老的(它是在命名空间出现之前发明的),并且因为它也试图做很多(HTML,事件处理等,以及XML)。 我建议使用JDOM2。 如果您查看Javadoc以找到从输入流构建JDOM2文档的方法,那应该不难。

Java有大量用于处理XML的库。 除了标准Java安装中包含的许多使用XML的类之外,还有许多其他开源库可用。 这里有一些选择。 查看文档,看看哪个符合您的需求:

XStream库非常快速且易于使用。 我已将它用于XML序列化,我对此非常满意。 如果您不想使用extrenal库,请尝试此处演示的javax.xml.parsers.DocumentBuilder

如果要将String str解析为Java中的Document ,可以执行以下操作:

        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder docBuilder = dbf.newDocumentBuilder();
        InputStream is = new ByteArrayInputStream(str.getBytes("UTF-8"));
        return docBuilder.parse(is);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM