我正在编写一个使用 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 &
的正确表示,然后解析 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);
输出同上。
关于c# - 无法读取包含 & 符号的 XML 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30224723/