关于非法路径,获取xml信息

时间:2014-09-10 02:41:00

标签: c# xml linq

我在尝试使用xml文件时遇到问题,我在这里和其他地方阅读了一些帖子,但我无法解决工作中的问题,我在C#中有一些问题,关于非法路径,获取xml信息

问题1:

System.ArgumentException:路径中有非法字符

string path = "D:\\temp\\"+bbb+".log";

我想用参数设置路径名:

string bbb = t1.Attribute("name").ToString();
string path = "D:\\temp\\"+bbb+".log";

示例file1.log file2.log file3.log ....

问题2:

我使用linq从xml获取一些信息 我想得到"路径"信息,但我只得到path ="D:\example1.c" 我想获得并仅显示D:\example1.c

代码:

    var path = from q in doc.Element("content").Element("aaainfo").Elements("setting")
                                    select q;

                        foreach (var onlypath in path)
                        {                         
                            string getpath = onlypath.Attribute("path").ToString();
                Console.WriteLine(getpath  + ""); 
            }

的xml:

<aaainfo>
    <setting name="file1" path ="D:\example1.c" serializeAs="String">
      <add value="aaa" name="file11" />
      <add value="bbb" name="file12" />
      <value />
    </setting>
     </aaainfo> 

问题3:

我想得到关于名称和值的数字,我有记录的日志文件。 现在当我使用&#34; file22.c&#34;打开C#文件,但我只得到name = 2,不能获得值nauber。 (我认为它记录为file1信息,它可能有关于xml的问题吗?)

正确的数字是name = 3,name = 2 我无法获得有关&#34; file2&#34;

的任何信息

代码:

   var path = from q in doc.Element("content").Element("aaainfo").Elements("setting")
                                    select q;

                        foreach (var onlypath in path)
                        {                         
                            string getpath = onlypath.Attribute("path").ToString();
                Console.WriteLine(getpath  + "");
                m  ++;

            }

XML                                                                   

 <aaainfo>
    <setting name="file2" path ="D:\example2.c" serializeAs="String">
      <add value="aaa2" name1="file21.c" />
      <add value="bbb2" name1="file22.c" />
      <add value="ccc2" name1="file23.c" />
      <value />
    </setting>
     </aaainfo>

1 个答案:

答案 0 :(得分:0)

您需要获取XAttribute.ToString()属性,或者只需将XAttribute.Value转换为XAttribute,而不是在任何地方执行string

string bbb = (string)t1.Attribute("name");
.....
string getpath = (string)onlypath.Attribute("path")