Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 名称不能以';1';字符,十六进制值0x31。从xml文件读取时_C#_Xml_Winforms_Linq - Fatal编程技术网

C# 名称不能以';1';字符,十六进制值0x31。从xml文件读取时

C# 名称不能以';1';字符,十六进制值0x31。从xml文件读取时,c#,xml,winforms,linq,C#,Xml,Winforms,Linq,我使用一个xml文件来读取内容,并将其显示在带有复选框的树状视图列表中。这样做的条件是,应该根据用户在组合框中选择的内容显示内容。假设用户在组合框中选择了2,那么treeview列表应该显示2的内容(来自xml文件)。我试过像: private void pjctsel_cmbbox_SelectedIndexChanged(object sender, EventArgs e) { var xmldoc = File.ReadAllText(@"D:\\test

我使用一个xml文件来读取内容,并将其显示在带有复选框的树状视图列表中。这样做的条件是,应该根据用户在组合框中选择的内容显示内容。假设用户在组合框中选择了2,那么treeview列表应该显示2的内容(来自xml文件)。我试过像:

private void pjctsel_cmbbox_SelectedIndexChanged(object sender, EventArgs e)
{            
    var xmldoc = File.ReadAllText(@"D:\\test.xml");
    var str = XElement.Parse(xmldoc);
    cmbbox_val = pjctsel_cmbbox.SelectedIndex.ToString();
***  var res = str.Elements(cmbbox_val).Where(x => x.Element("general").Value.Equals(cmbbox_val)).ToList();
    MessageBox.Show(res.ToString());
}
cmbbox_val = user selected value from combobox.
xmlfile内容是:

<serv>
    <general name="one">    
    <server name="oneone">
        <service name="1143"/>
        <service name="1142"/>
    </server>
</general>
<general name="two">        
    <server name ="twoone">
        <service name="2143"/>
        <service name="2142"/>
    </server>
</general>
</serv>

在我的c#代码中,我标记了*我得到了以下异常“名称不能以'1'字符开头,十六进制值0x31。”

谷歌搜索了它,但我只能找到那些以标记字符串1开始xml文件的人

有什么想法吗

如果您有任何想法,我们将不胜感激

编辑:

我的组合框有1,2这样的值

我尝试的是,如果用户在组合框中选择值2,那么我的应用程序需要在xml文件中检查名称为2的条目,如果找到任何匹配项,那么与这两个节点对应的“服务器名称”节点和“服务名称”节点必须显示在树视图列表中

希望这有意义

cmbbox_val = pjctsel_cmbbox.SelectedIndex.ToString();   // SelectedIndex is an integer

var res = str
            .Elements(cmbbox_val)                      // so this will fail
            .Where(x => x.Element("general")
            .Value.Equals(cmbbox_val)).ToList();
这可能会奏效:

cmbbox_val = pjctsel_cmbbox.SelectedItem.ToString();   // or SelectedItem.SomeProperty

但我还注意到,您正在查找
cmbbox\u val
2次,并且
Element(“general”)
已经是XML的根。所以这不起作用,但我们没有信息来修复它


编辑后:

  • 我的组合框有1,2这样的值
  • 需要在xml文件中检查名为2的条目
  • 然后“服务器名称”节点和“服务名称”节点必须显示在树视图列表中
  • 步骤1)和2)

    这可能会奏效:

    cmbbox_val = pjctsel_cmbbox.SelectedItem.ToString();   // or SelectedItem.SomeProperty
    

    但我还注意到,您正在查找
    cmbbox\u val
    2次,并且
    Element(“general”)
    已经是XML的根。所以这不起作用,但我们没有信息来修复它


    编辑后:

  • 我的组合框有1,2这样的值
  • 需要在xml文件中检查名为2的条目
  • 然后“服务器名称”节点和“服务名称”节点必须显示在树视图列表中
  • 步骤1)和2)

    根据MSDN,将表示要选择的元素名称的字符串作为参数。名称不能以
    1
    开头,因为您正在为
    元素()传递
    cmbbox\u val
    ,因此会出现该错误

    您正在使用该
    cmbbox\u val
    作为
    值。Equals
    和节点选择器:我打赌它包含
    字符串
    “1143”
    ,根据MSDN,它将表示要选择的元素名称的字符串作为参数。名称不能以
    1
    开头,因为您正在为
    元素()传递
    cmbbox\u val
    ,因此会出现该错误


    您正在使用该
    cmbbox\u val
    作为
    值。Equals
    和节点选择器:我打赌它包含
    字符串
    “1143”

    问题是您正在将
    整数作为
    XElement
    名称传递。名称不应以数字开头。可能的错误是,您在代码中传递了组合框。
    SelectedIndex
    。如果已正确配置组合框(即1,“1”2,“2”),则应通过组合框。
    SelectedValue
    。如果未填写组合框的值列表,则可以将代码更改为:

    private void pjctsel_cmbbox_SelectedIndexChanged(object sender, EventArgs e)
        {            
            var xmldoc = File.ReadAllText(@"D:\\test.xml");
            var str = XElement.Parse(xmldoc);
            string cmbbox_val = pjctsel_cmbbox.SelectedIndex==0 ? "one" : "two";
            var res = str.Elements(cmbbox_val).Where(x => x.Element("general").Value.Equals(cmbbox_val)).ToList();
            MessageBox.Show(res.ToString());
        }
    

    问题是您正在将一个
    整数
    作为
    XElement
    名称
    传递。名称不应以数字开头。可能的错误是在代码中传递组合框。
    选择了索引
    。如果您正确配置了组合框(即1,“1”2,“2”)您应该通过组合框。
    SelectedValue
    。如果不填写组合框的值列表,则可以将代码更改为:

    private void pjctsel_cmbbox_SelectedIndexChanged(object sender, EventArgs e)
        {            
            var xmldoc = File.ReadAllText(@"D:\\test.xml");
            var str = XElement.Parse(xmldoc);
            string cmbbox_val = pjctsel_cmbbox.SelectedIndex==0 ? "one" : "two";
            var res = str.Elements(cmbbox_val).Where(x => x.Element("general").Value.Equals(cmbbox_val)).ToList();
            MessageBox.Show(res.ToString());
        }
    


    @Adriano:我只是在读那个文件..不打算从我的应用程序中写入任何内容..你仍然需要知道xml文件的编码,并用该编码读取文件。jctsel_cmbbox.SelectedIndex返回一个整数。1.ToString()“一”;1.ToString==“1”注意,您可以编辑问题。澄清组合框中的内容以及应该发生的事情。确保数据匹配。@HenkHolterman:问题已编辑。。请参阅编辑part@Adriano:我正在读取该文件..不打算从我的应用程序中写入任何内容..您仍然需要知道xml文件的编码并使用该编码读取该文件。jctsel_cmbbox.SelectedIndex返回一个整数。1.ToString()“一”;1.ToString==“1”注意,您可以编辑问题。澄清组合框中的内容以及应该发生的事情。确保数据匹配。@HenkHolterman:Question edited..请查看编辑部分,但这也失败了..在我的情况下..我收到的异常不再是一个问题..但它没有显示我在组合框中选择的内容..如果你知道怎么做,请提供解决方案..不,我没有线索。组合框中有哪些值?一些字符串值..xml文件的服务器名称它有文件名吗?那么为什么它在
    .Value.Equals(cmbbox\u val)中
    ?某些字符串值不是一个好答案:当抛出异常时,将鼠标光标移到
    cmbbox\u val
    名称上,并准确查看其中的内容。但即使这样也会失败..在我的情况下..我收到的异常不再是一个问题..但它不会显示我在组合框中选择的内容..可以吗如果你知道怎么做的话,请给我一个解决办法不,我一点都不知道。组合框中有哪些值?一些字符串值..xml文件的服务器名称它有文件名吗?那么为什么它出现在
    .Value.Equals(cmbbox\u val)
    中?一些字符串值不是一个好答案:当异常发生时