2013-12-17 57 views
1

我使用XPathJava我不太清楚C#如何將使用XPath的簡單C#方法轉換爲Java方法?

在這個時候,我不得不使用的XPath的Java方法的一些C#方法轉換,我對此有一些疑慮。

在C#方法,我發現下面的代碼行:

System.Xml.XmlNode element; 
System.Xml.XmlNode filter; 

filter = _document.CreateElement("filter"); 
element = _document.CreateElement("name"); 
element.InnerText = es.Descrizione; 
filter.AppendChild(element); 

,我試圖將其轉換成Java代碼。

我認爲第2行可譯爲:

Element element; 
Element filter; 

(這是簡單的一個Jdom的元素對象的聲明)

但我對如何在這些行翻譯疑點重重Java:

filter = _document.CreateElement("filter"); 
element = _document.CreateElement("name"); 

filter.AppendChild(element); 

你能幫助我嗎?

TNX

安德烈

+0

首先,您的C#代碼不使用XPath。它只使用DOM方法。其次,在Java中,您可以選擇樹型模型:DOM,JDOM,XOM,DOM4J。你已經暗示你想要使用JDOM(這可能是一個不錯的選擇),但你會得到令人困惑的答案,因爲你沒有真正明確這一點。 –

回答

0

相當於Java中的是以下幾點:

import javax.xml.parsers.*; 
import org.w3c.dom.*; 

public class Demo { 

    public static void main(String[] args) throws Exception { 
     Element element;       // System.Xml.XmlNode element; 
     Element filter;        // System.Xml.XmlNode filter; 

     DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder db = dbf.newDocumentBuilder(); 

     Document _document = db.newDocument(); 
     filter = _document.createElement("filter"); // filter = _document.CreateElement("filter"); 
     element = _document.createElement("name"); // element = _document.CreateElement("name"); 
     element.setTextContent(es.Descrizione);  // element.InnerText = es.Descrizione; 
     filter.appendChild(element);    // filter.AppendChild(element); 
     _document.appendChild(filter); 
    } 

} 
0

你爲什麼要提的XPath?我沒有看到它的任何用處。如果你想繼續使用DOM API,那麼你可以做到這一點,即使在Java中與http://docs.oracle.com/javase/7/docs/api/org/w3c/dom/package-summary.html和你的代碼將

import org.w3c.dom; 


Element element; 
Element filter; 

filter = _document.createElement("filter"); 
element = _document.createElement("name"); 
element.setTextContent(es.Descrizione); 
filter.appendChild(element); 

如果你想使用JDOM,那麼你就需要改變方法,而是使用基於DOM的工廠方法,如document.createElement(..),您只需使用構造函數方法,如new Element(..)

+0

mmm我正在導入org.jdom。*包,而不是org.w3c.dom,我不知道這是一回事。順便說一下,我試圖做的事情就像你建議我,但不能工作,我有: Document document = new Document(); filter = document.createElement(「filter」); 但現在Eclipse告訴我以下錯誤消息:「方法createElement(String)未定義類型文檔」 爲什麼? – AndreaNobili

+0

@AndreaNobili,W3C DOM和JDOM是不同的對象模型,您需要決定要使用哪一個。您似乎在Java中使用JDOM,但是當您嘗試使用.NET中的DOM轉換C#代碼時,在Java中使用DOM也可能更容易。這是你的選擇。如果您選擇JDOM,那麼您必須使用JDOM API。文檔中的所有'createXXX'方法都是W3C DOM的一部分,JDOM故意使用不同的方法並提供構造函數方法,例如'new Element(..)'來構造元素節點。因此,決定使用哪個對象模型和哪個API。 –

相關問題