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