4

.NETC# 中,当尝试将 a 加载string到中时xml,您需要使用XmlDocumenttype fromSystem.Xml并执行以下操作:

例如:

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

这看起来很简单,但我该怎么做Java呢?是否可以像上面那样直接、简短和简单地加载 astring并避免为此实施其他方法?xml

提前致谢。

4

4 回答 4

6

试试这个:

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

要以字符串形式获取结果:

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);
于 2012-10-22T02:13:20.910 回答
3

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

于 2012-10-22T07:50:19.150 回答
0

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

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

于 2012-10-22T01:45:31.630 回答
0

如果要在 Java 中解析字符串strDocument可以执行以下操作:

        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder docBuilder = dbf.newDocumentBuilder();
        InputStream is = new ByteArrayInputStream(str.getBytes("UTF-8"));
        return docBuilder.parse(is);
于 2012-10-22T02:05:30.170 回答