我正在编写一个用Visual C#读取
XML文件的程序.我在读取Xml文件时遇到问题,因为它包含无效的XML符号,例如’&’.
我必须阅读XML但我不能修改文档.如何使用C#修改Xml文件?我的代码到目前为止:
private void button1_Click(object sender,EventArgs e) { XmlDocument doc; doc = new XmlDocument(); doc.Load("nuevo.xml"); XmlNodeList Xpersonas = doc.GetElementsByTagName("personas"); XmlNodeList Xlista = ((XmlElement)Xpersonas[0]).GetElementsByTagName("edad"); foreach (XmlElement nodo in Xlista) { string edad = nodo.GetAttribute("edad"); string nombre = nodo.InnerText; textBox1.Text = nodo.InnerXml; }
解决方法
正如@Ebrown建议的那样,一种可能性是读取字符串变量中的文件内容并替换&具有正确表示的属性XML& amp;然后解析XML结构.可能的解决方案可能如下所示:
var xmlContent = File.ReadAllText(@"nuevo.xml"); XmlDocument doc; doc = new XmlDocument(); doc.LoadXml(xmlContent.Replace("&","&")); XmlNodeList Xpersonas = doc.GetElementsByTagName("personas"); XmlNodeList Xlista = ((XmlElement)Xpersonas[0]).GetElementsByTagName("edad"); foreach (XmlElement nodo in Xlista) { string edad = nodo.GetAttribute("edad"); string nombre = nodo.InnerText; Console.WriteLine(nodo.InnerXml.Replace("&","&")); }
输出是:
34 & 34
如果可以使用LINQ2XML,那么解决方案甚至更短,并且不需要编写反向(第二)替换,因为LINQ2XML会自动为您执行此操作:
var xmlContent = File.ReadAllText(@"nuevo.xml"); var xmlDocument = XDocument.Parse(xmlContent.Replace("&","&")); var edad = xmlDocument.Root.Element("edad").Value; Console.WriteLine(edad);
输出与上面相同.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。