从XML向组合框添加数据的C#问题

时间:2019-06-27 02:02:10

标签: c# xml combobox

我对XML文件还很陌生,我正尝试从XML读取并从XML输入一些值并将它们存储在组合框中。我查看了许多示例,但没有找到足够接近的示例来弄清楚这一点。我已经设法从XML文件中读取数据并将数据输入到Combobox中,但是由于某种原因,所有内容都添加到了一行中。

这是XML文件的外观。

public class runner()
{
public static String testPath;
private final string API = "<path to API service hook>";
private final string UI = "<path to UI service hook>";
public static String testPath;
public static void main ( String args[])
{

if(args.length >1)
{
testPath = args[0]
}
else
{
String testPath = API ; //or UI
}
Main.main(new String[]{<Pass cucumber parameters>, "-g" ,testPath});

}

这是我的C#代码:

    <menus>
      <addMaterialForm>
        <filamentType>
          <Type>ABS</Type>
          <Type>PETG</Type>
          <Type>PLA</Type>    
        </filamentType>
      </addMaterialForm>
    </menus>

由于某种原因,所有内部文本都加在一起,这就是我得到的结果。 result

我真的在这里挠头,任何帮助将不胜感激。

谢谢!

2 个答案:

答案 0 :(得分:0)

好吧,您还没有使用XPath到达需要的项目所在的正确的Parent(filamentType)。因此,“内部”文本为您提供了所有“节点”值。

使用xpath之类的

//menus/addMaterialForm/filamentType 

到达正确的父XmlNode。 然后遍历所有子项并添加到组合框。

答案 1 :(得分:0)

要一次从“ filamentType”元素中检索所有类型值,则需要再向下一级。

另一种方法是使用XDocument.Descendants检索特定元素的所有值。

ComboBox具有DataSource属性。从xml文件中检索类型的集合,并将该集合设置为DataSource属性。

var document = XDocument.Load(Globals.xmlFilePath);
var types = document.Descendants("Type").Select(element => element.Value).ToList();

filamentBox.DataSource = types;

对于“一个班轮”粉丝:)

filamentBox.DataSource = XDocument.Load(Globals.xmlFilePath)
    .Descendants("Type")
    .Select(element => element.Value)
    .ToList();