2011-03-21 29 views
0

在下面的代码中,我试图通过使用一个streamreader来进行文本分析。这是从文本文件中获取电子邮件地址。如果我没有电子邮件地址,组合框留空(index = -1)。如果我有我的XML文件中找到的电子邮件,那么我会选择它。否则,我将使用新的电子邮件地址将节点添加到我的xml文件中。字符串与孩子节点的密文的比较

代码:

private void Textparsing() 
    {    
     using (StreamReader sr = new StreamReader(Masterbuildpropertiespath))     
      { 
       while (sr.Peek() >= 0) 
       if (line.StartsWith("Builder_Email:")) 
        { 
         string[] fields = line.Split('\t'); 
         string builderemail = fields[3]; 
         XmlDocument emailparse = new XmlDocument(); 
         emailparse.LoadXml(@"C:\GUI\buildermanageremail.xml"); 
         XmlNodeList emailnode = emailparse.GetElementsByTagName("value"); 
         if (string.IsNullOrEmpty(builderemail)) 
          comboBox1.SelectedIndex = -1; 
         else 
          foreach (XmlNode node in emailnode) 
          { 
           if (builderemail == node.InnerText) 
           { 
            int count = emailparse.SelectNodes("email/builderemail/builder").Count; 
            count--; 
            comboBox1.SelectedIndex = count; 
           } 
           else 
           { 
            //create main node 
            XmlNode abc = emailparse.CreateNode(XmlNodeType.Element, "builder", null); 

            //create the first child node 
            XmlNode value = emailparse.CreateElement("value"); 
            //set the value 
            value.InnerText = builderemail; 

            // add childes to father 
            //node.AppendChild(id); 
            abc.AppendChild(value); 

            // find the node we want to add the new node to 
            XmlNodeList l = emailparse.GetElementsByTagName("builderemail"); 
            // append the new node 
            l[0].AppendChild(abc); 
            // save the file 
            emailparse.Save(@"C:\GUI\buildermanageremail.xml"); 

            //then we populate the new updated xml file into the drop down list: 
            PopulateDDLFromXMLFile(); 
            int count = emailparse.SelectNodes("email/builderemail/builder").Count; 
            count--; 
            comboBox1.SelectedIndex = count; 
           } 
          } 

      } 

然而,我得到一个XmlException(在根级别的数据是无效的行1,位置1。)在这一行:

emailparse.LoadXml(@"C:\GUI\buildermanageremail.xml"); 

为什么会这样?

我XMLFILE:

<?xml version="1.0" encoding="utf-8"?> 
<email> 
    <builderemail> 
    <builder> 
     <value>[email protected]</value> 
    </builder> 
    <builder> 
     <value>Others</value> 
    </builder> 
    </builderemail> 
    <manageremail> 
    <manager> 
     <value>[email protected]</value> 
    </manager> 
    <manager> 
     <value>Others</value> 
    </manager> 
    </manageremail> 
</email> 

回答

1

您应该使用的,而不是

 emailparse.LoadXml(@"C:\GUI\buildermanageremail.xml"); 

 emailparse.Load(@"C:\GUI\buildermanageremail.xml"); 

方法,因为loadXML的可以加载XML字符串,而不是文件。

+0

谢谢,错过了这部分 – jeremychan 2011-03-21 07:57:05