C# 从XML-C打印数组#
Im正在处理XML数据,而我试图做的是C# 从XML-C打印数组#,c#,xml,printing,methods,C#,Xml,Printing,Methods,Im正在处理XML数据,而我试图做的是 用户从下拉列表中选择名称值 对于具有上述名称的每个节点,值将添加到列表中 列表然后转换为字符串数组 **打印要测试的阵列时,未给出任何输出 字符串数组转换为int数组(允许在 阵列) **打印不再提供输出 这是我生成的代码,我没有收到错误,只是没有输出,所以我无法判断数组是否已填充 if (DropDownList1.SelectedItem.Text=="Cabin") { //Load XML document XmlDocumen
- 用户从下拉列表中选择名称值
- 对于具有上述名称的每个节点,值将添加到列表中
- 列表然后转换为字符串数组
- **打印要测试的阵列时,未给出任何输出
- 字符串数组转换为int数组(允许在 阵列)
- **打印不再提供输出
if (DropDownList1.SelectedItem.Text=="Cabin")
{
//Load XML document
XmlDocument xml = new XmlDocument();
xml.LoadXml(Server.MapPath("~/Upload/" + FileUpload1.FileName));
// xnList = nodes -> rows with Cabin
XmlNodeList xnList = xml.SelectNodes("/root/row[@name='Cabin']");
//create a string list
List<string> strvalues = new List<string>();
//populate list with values @ node Cabin
foreach (XmlNode xn in xnList)
{
strvalues.Add(xn["value"].InnerText);
}
//convert list to array
strvalues.ToArray();
for (int i = 0; i < 2; i++)
{
//print array
Console.WriteLine(strvalues[i]);
}
//convert string array to int array for data manipulation
int[] values = strvalues.Select(x => int.Parse(x)).ToArray();
for (int i = 0; i < values.Length; i++)
{
//print array
Console.WriteLine(values[i]);
}
}
if(DropDownList1.SelectedItem.Text==“CAB”)
{
//加载XML文档
XmlDocument xml=新的XmlDocument();
LoadXml(Server.MapPath(“~/Upload/”+FileUpload1.FileName));
//xnList=节点->带驾驶室的行
XmlNodeList xnList=xml.SelectNodes(“/root/row[@name='cab']”);
//创建一个字符串列表
List strvalues=new List();
//在节点处用值填充列表
foreach(xnList中的XmlNode xn)
{
添加(xn[“value”].InnerText);
}
//将列表转换为数组
strvalues.ToArray();
对于(int i=0;i<2;i++)
{
//打印阵列
Console.WriteLine(标准值[i]);
}
//将字符串数组转换为int数组以进行数据操作
int[]values=strvalues.Select(x=>int.Parse(x)).ToArray();
for(int i=0;i
下面是XML文件的一部分
<root>
<row>
<var name="Name" value="Garcia" />
<var name=" Surname" value=" Jose" />
<var name=" Country" value=" Cuba" />
<var name=" Job" value="Software Developer" />
<var name=" Cabin" value="345" />
</row>
<row>
<var name="Name" value="Lenon" />
<var name=" Surname" value="Tim" />
<var name=" Country" value="USA" />
<var name=" Job" value="SoftwareDeveloper" />
<var name=" Cabin" value="444" />
</row>
</root>
您是否有与解决方案关联的控制台窗口?我认为您使用的是UI,没有控制台窗口(因此console.WriteLine不会输出任何内容)。您可以附加一个,但对于调试,我建议使用debug.WriteLine:
此外,您应该检查阵列是否以调试模式填充。您是否有与解决方案关联的控制台窗口?我认为您使用的是UI,没有控制台窗口(因此console.WriteLine不会输出任何内容)。您可以附加一个,但对于调试,我建议使用debug.WriteLine:
另外,您应该检查数组是否在调试模式下填充。示例XML中name的属性值为“cab”-注意前导空格 在XPath查询中,根据名称测试的属性值为“CAB”-无前导空格 所以你永远找不到任何节点 查看此问题的一般答案是在创建节点列表后立即设置断点,并在该点检查内容
另一方面,如果您可以使用Linq to XML,那么使用Linq to XML会更愉快。示例XML中name的属性值为“cab”-请注意前导空格 在XPath查询中,根据名称测试的属性值为“CAB”-无前导空格 所以你永远找不到任何节点 查看此问题的一般答案是在创建节点列表后立即设置断点,并在该点检查内容
另一方面,如果您可以使用Linq to XML,那么使用Linq to XML会更方便。您的XPath表达式是错误的,因为
元素没有名为name
的属性(而且它还缺少实际name属性值中的空格)
您是指/root/row/var[@name='cab']
还是可能是/root/row[var/@name='cab']
(如果您想要
元素,尽管查看您的代码并非如此)
此外,行
strvalues.ToArray()
什么也不做,因为您没有将结果分配给任何对象ToArray
不修改列表,它返回一个新数组,其内容与列表相同。在这段代码中,也没有真正的理由将列表转换为数组。您的XPath表达式是错误的,因为
元素没有名为name
的属性(而且它在实际的name属性值中也缺少空格)
您是指/root/row/var[@name='cab']
还是可能是/root/row[var/@name='cab']
(如果您想要
元素,尽管查看您的代码并非如此)
此外,行
strvalues.ToArray()
什么也不做,因为您没有将结果分配给任何对象ToArray
不修改列表,它返回一个新数组,其内容与列表相同。在这段代码中,也没有真正的理由将列表转换为数组。感谢您指出间距问题。原因是我将.csv文件转换为XML,因此显然我忽略了间距问题。至于转换为数组,我需要能够传入一个数据数组,所以我认为最好最终将列表转换为一个int数组。将其转换为int
数组的代码很好,之前调用strvalues.ToArray()
是多余的(并且没有效果,因为正如我所说,您忽略了返回值)。感谢您指出间距问题。原因是我将.csv文件转换为XML,因此我显然忽略了间距问题。至于转换为数组,我需要能够传入一个数据数组,因此我认为最好最终将列表转换为int数组,将代码转换为int
数组很好,之前调用strvalues.ToArray()
是多余的(并且没有效果,因为正如我所说,您忽略了返回值)。