我对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
我真的在这里挠头,任何帮助将不胜感激。
谢谢!
答案 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();