[英]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.