簡體   English   中英

如何在 C# 中訪問 XML 文件中的數據

[英]How to access Data from XML File in C#

如何將來自 XML 文件的數據訪問到變量中?

<RESULTS>
    <ROW>
        <COLUMN NAME="OM_USER"><![CDATA[TEXT]]></COLUMN>
        <COLUMN NAME="LASTNAME"><![CDATA[TEXT]]></COLUMN>
        <COLUMN NAME="FIRSTNAME"><![CDATA[TEXT]]></COLUMN>
        <COLUMN NAME="PHONE"><![CDATA[TEXT]]></COLUMN>
    </ROW>
</RESULTS>

這是我嘗試過的,但輸出很奇怪

XDocument xmlDocument = XDocument.Load(@"PATH");

var xElement = xmlDocument.Element();

if (xElement != null)
{
    foreach (var child in xElement.Elements())
    {
       Console.WriteLine(child.Name + ": " + child.Value);
    }
 }

我的輸出是這樣的:

行:TEXTEXTTextTTEXT 行:TEXTEXTTextTTEXT 行:TEXTEXTTextTTEXT 行:TEXTEXTTextTTEXT

感謝您的幫助 =)

您面臨的問題是您在 xml 樹中的級別太高了。 通過說明

var xElement = xmlDocument.Elements();

您從 xdocument 的頂部獲取所有元素,即名為“RESULTS”的根

您的 foreach 正在循環遍歷“RESULTS”元素的所有子元素,該元素僅為“ROW”。 如果您指定要打印子元素的名稱 (ROW) 及其值,您將獲得元素“ROW”及其所有子元素的所有文本。 如果您使用調試器,您將看到此內容。

通過將您的代碼更改為下面的類似內容,您將獲得正確的結果

const string msg = "<RESULTS><ROW><COLUMN NAME=\"OM_USER\"><![CDATA[TEXT]]></COLUMN><COLUMN NAME=\"LASTNAME\"><![CDATA[TEXT]]></COLUMN><COLUMN NAME=\"FIRSTNAME\"><![CDATA[TEXT]]></COLUMN><COLUMN NAME=\"PHONE\"><![CDATA[TEXT]]></COLUMN></ROW></RESULTS>";

XDocument xmlDocument = XDocument.Parse(msg);

//get the first element named ROW from the xdocument.
var xElement = xmlDocument.Descendants().First(x => x.Name == "ROW");

if (xElement != null)
{
   //Loop through the childs of ROW
   foreach (var child in xElement.Elements())
   {
      //Find the first attribute in the child element which is named NAME.
      var childAttrName = child.Attributes().First(x => x.Name == "NAME");
      //Print the value of the attribute called name and the value of the element.
      System.Console.WriteLine(childAttrName.Value + " : " + child.Value);
   }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM