【发布时间】:2016-09-26 16:36:49
【问题描述】:
我正在尝试编写代码以将 xml 文件转换为数据表。 我收到以下错误
System.Xml.Linq.XDocument' 不包含“DocumentNode”的定义,并且找不到接受“System.Xml.Linq.XDocument”类型的第一个参数的扩展方法“DocumentNode”(您是否缺少使用指令还是程序集引用?)
我错过了什么?
下面是我的代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Xml.XPath;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
var xdoc = System.Xml.Linq.XDocument.Load(filename);
System.Xml.XmlElement xelRoot = xdoc.DocumentElement;
System.Xml.XmlNodeList xList = xelRoot.SelectNodes("/rulebase/security/rules/entry");
int x = 0;
int y = 0;
string[] ColumnArray = new string[25];
string[] RowArray = new string[25];
foreach (System.Xml.XmlNode pNode in xList)
{
if (pNode.ChildNodes.Count = 0)
{
}
else
{
string val1 = "";
string nodeVal = "";
string nodeName = pNode.name;
foreach (System.Xml.XmlNode childNode in pNode.ChildNodes)
{
val1 = val1 + childNode.value + ", ";
}
val1 = val1 + " ,";
nodeVal = val1.substring(0, val1.length - 3);
ColumnArray[x] = nodeName;
RowArray[y] = nodeVal;
x++;
y++;
}
}
System.Data.DataTable table1 = new System.Data.DataTable("entry");
foreach (string s in ColumnArray)
{
table1.Columns.Add(s);
}
System.Data.DataRow row;
row = table1.LoadDataRow(RowArray, true);
}
}
}
【问题讨论】:
-
您正在混合 X* 和 Xml* 系列的类。那是行不通的。 .NET 有(至少)2 个不同的 API 用于处理 Xml,选择一个。我的选择是基于 Linq 的。
-
知道了!谢谢@HenkHolterman