2010-10-27 33 views
3

在一個Visual C#項目中,我想將XML文檔對象傳遞給一個方法。在該方法中,我應該讀取存儲在XML Document對象中的值。無需創建XML文件。如何讀取C#中的XML文檔對象?

感謝回覆傢伙我終於得到了我的一段代碼。

//use following code when assign values to XMlDocument 
     XMLOBJECT() 
      { 
       XmlDocument xmlEmployee = new XmlDocument(); 
       XmlElement xmlRoot = xmlEmployee.CreateElement("HR"); 
       XmlElement xmlEmployees = xmlEmployee.CreateElement("Employee"); 
       xmlEmployees.SetAttribute("Name", "XYZ"); 
       xmlEmployees.SetAttribute("DOB", "12/12/2010"); 
       xmlRoot.AppendChild(xmlEmployees); 
       xmlEmployee.AppendChild(xmlRoot); 
       Employee Emp=new EMployee(); 
       Emp.retriveXMl(xmlEmployee); 
       } 

在創建我們的XML對象現在我們可以通過XML對象上面的代碼。

//Use Following code when assign values to Employee Object 
class employee 
    { 
    retrivelXMl(XMLDOCUMENT xmlEmployeeobject) 
    { 
    string NAME; 
    int DOB; 
      XmlNodeList xmlEmployees = xmlEmployeeobject.SelectNodes("//Employee"); 
      foreach (XmlElement Employee in xmlEmployees) 
      { 
      NAME = Employee.GetAttribute("Name")); 
      DOB = int.parse(Employee.GetAttribute("DOB"));  
      } 
    } 
    } 
+0

哇,帽鎖多少? – 2010-10-27 11:19:57

+0

您能否準確解釋您在描述您所描述的內容時遇到的問題? – Oded 2010-10-27 11:20:00

+0

LOL ...顯然我並不是唯一受帽子煩惱的人。 – cHao 2010-10-27 11:21:35

回答

3

可以使用XmlNodeReader訪問的元素在你的XmlDocument

根據您想要對XmlDocument的內容所做的操作,XmlNodeReader可能不夠。 由於您提供的信息很少,我添加了一些通用代碼,顯示如何使用XmlNodeReader開始訪問XmlDocument

如果您在您的問題中添加更多詳細信息以確定您要達到的目標,我們可能會根據您的需求爲您提供更好的解決方案。

public void WriteXmlDocument(XmlDocument document) 
{ 
    if (document == null) 
    { 
     throw new ArgumentNullException("document"); 
    } 

    using (XmlNodeReader nodeReader = new XmlNodeReader(document)) 
    { 
     while (nodeReader.Read()) 
     { 
      Console.WriteLine(nodeReader.Value); 
     } 
    }; 
} 

- 編輯 -

闡述一下XmlNodeReader的可能性一點。您也可以選擇特定節點並處理它們。

使用,下面還可以訪問特定的節點值。

XmlNode specificNode = document.SelectSingleNode("/NodeName/ChildNodeName"); 

if (specificNode != null) 
{ 
    XmlNodeReader specificNodeReader = new XmlNodeReader(specificNode); 

    while (specificNodeReader.Read()) 
    { 
     Console.WriteLine(specificNodeReader.Value); 
    } 
} 

實例寫那些節點值輸出到控制檯,但是,可以改變此將該值寫入到例如變量。靈活性在那裏。

+0

感謝回覆傢伙,我終於得到了我的一段代碼。 – 2010-10-28 04:54:12

1

我喜歡使用XmlTextReader和XmlTextWriter。它們非常易於使用。

this鏈接

編輯

從XmlDocument的使用使用

XmlTextReader xmlTextReader = new XmlTextReader(new StringReader(xmlDocument.OuterXml)); 

如果你想使用驗證使用

XmlValidatingReader xmlValidatingReader = new XmlValidatingReader(xmlTextReader); 
+0

是的,我首先研究了那些用法。雖然我找不到一個在沒有引用實際的Xml文件,TextWriter或其他文件的情況下初始化'XmlTextWriter'的方法,我認爲OP沒有實際的Xml文件可用,而只是內存中的一個'XmlDocument'對象。我無法從'XmlDocument'對象生成'XmlTextReader'。我檢查了你發佈的鏈接,並且在作者總是使用物理XML文件的示例中,據我所知。我認爲OPs的問題是他只能訪問'XmlDocument'對象,並且不想使用實際的XML文件。 – Nope 2010-10-27 12:16:55

+0

雖然XmlNodeReader是一個很好的方法。 – 2010-10-27 12:29:17

+0

實例化'XmlTextReader'的好方法。在這一點上,我還沒有想過驗證。很好的接球(+1);是的,你是正確的,'XmlNodeReader'似乎不支持模式驗證或文檔類型定義(DTD)。 – Nope 2010-10-27 12:36:04

0

您是否嘗試過在看LINQ to XML?