簡體   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