Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.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# 读取带有变量标记的XML文件_C#_Asp.net_Xml - Fatal编程技术网

C# 读取带有变量标记的XML文件

C# 读取带有变量标记的XML文件,c#,asp.net,xml,C#,Asp.net,Xml,我已创建了以下格式的XML文件: <?xml version="1.0" encoding="utf-8" ?> <Employee_Info> <Employee> <Name> Blah </Name> <ID> 001 </ID> <Dept> ISDC </Dept> </Employee> <Employee> <Name> Bleh <

我已创建了以下格式的XML文件:

<?xml version="1.0" encoding="utf-8" ?>
<Employee_Info>
<Employee>
<Name> Blah </Name>
<ID> 001 </ID>
<Dept> ISDC </Dept>
</Employee>
<Employee>
<Name> Bleh </Name>
<ID> 002 </ID>
<Dept> COE </Dept>
</Employee>
<Employee>
<Name> Bah </Name>
<ID> 003 </ID>
<Dept> Roll_Out </Dept>
</Employee>
</Employee_Info>
Name: Blah
ID: 001
Dept: COE
如何显示标签和值?也就是说,我希望我的输出采用以下格式:

<?xml version="1.0" encoding="utf-8" ?>
<Employee_Info>
<Employee>
<Name> Blah </Name>
<ID> 001 </ID>
<Dept> ISDC </Dept>
</Employee>
<Employee>
<Name> Bleh </Name>
<ID> 002 </ID>
<Dept> COE </Dept>
</Employee>
<Employee>
<Name> Bah </Name>
<ID> 003 </ID>
<Dept> Roll_Out </Dept>
</Employee>
</Employee_Info>
Name: Blah
ID: 001
Dept: COE

如果我在XML文件中只在一个地方添加一个额外的元素,比如在3名员工的信息中添加一个额外的电子邮件标记,会怎么样?我该怎么读呢?

为什么不使用LINQ to XML来简化:

 var result =  xDoc.Descendants("Employee").Select(x => new
                        {
                            Name = x.Element("Name").Value,
                            Id = x.Element("ID").Value,
                            Dept = x.Element("Dept").Value,
                        });

为什么不使用LINQ to XML来简化:

 var result =  xDoc.Descendants("Employee").Select(x => new
                        {
                            Name = x.Element("Name").Value,
                            Id = x.Element("ID").Value,
                            Dept = x.Element("Dept").Value,
                        });
XDocument doc=XDocument.Load(Server.MapPath(“~/XMLFile.xml”);
变量行=文档子体(“员工”)。选择(e=>new
{
名称=e.元素(“名称”).值,
ID=e.元素(“ID”).值,
部门=e.Element(“部门”)值
});
foreach(行中的变量行)
{
Write(String.Format(“Name:{0}
”,row.Name)); Write(String.Format(“ID:{0}
”,row.ID)); Write(String.Format(“Dept:{0}
”,row.Dept)); }
或无硬编码:

foreach (XElement x in doc.Descendants("Employee").Nodes())
{
    Response.Write(String.Format("{0}: {1} <br />", x.Name, x.Value));
}
foreach(文档子体(“员工”).Nodes()中的XElement x)
{
Write(String.Format(“{0}:{1}
”,x.Name,x.Value)); }
XDocument doc=XDocument.Load(Server.MapPath(“~/XMLFile.xml”);
变量行=文档子体(“员工”)。选择(e=>new
{
名称=e.元素(“名称”).值,
ID=e.元素(“ID”).值,
部门=e.Element(“部门”)值
});
foreach(行中的变量行)
{
Write(String.Format(“Name:{0}
”,row.Name)); Write(String.Format(“ID:{0}
”,row.ID)); Write(String.Format(“Dept:{0}
”,row.Dept)); }
或无硬编码:

foreach (XElement x in doc.Descendants("Employee").Nodes())
{
    Response.Write(String.Format("{0}: {1} <br />", x.Name, x.Value));
}
foreach(文档子体(“员工”).Nodes()中的XElement x)
{
Write(String.Format(“{0}:{1}
”,x.Name,x.Value)); }
我相信你做得对。如果查看aspx页面的源代码,您应该会看到XML标记

<employee_info><employee><name>Blah<br></name><id>001<br></id><dept>ISDC<br></dept></employee><employee><name>Bleh<br></name><id>002<br></id><dept>COE<br></dept></employee><employee><name>Bah<br></name><id>003<br></id><dept>Roll_Out<br></dept></employee></employee_info>
Blah
001
ISDC
Bleh
002
COE
Bah
003
推出

我相信你做得对。如果查看aspx页面的源代码,您应该会看到XML标记

<employee_info><employee><name>Blah<br></name><id>001<br></id><dept>ISDC<br></dept></employee><employee><name>Bleh<br></name><id>002<br></id><dept>COE<br></dept></employee><employee><name>Bah<br></name><id>003<br></id><dept>Roll_Out<br></dept></employee></employee_info>
Blah
001
ISDC
Bleh
002
COE
Bah
003
推出
尝试以下代码

XmlDocument xDoc = new XmlDocument();
xDoc.Load("Server.MapPath("~/XMLFile.xml")");

XmlNodeList nodeList;
nodeList = xDoc.DocumentElement.SelectNodes("Employee");

foreach (XmlNode emp in nodeList)
{
    foreach (XmlNode child in emp.ChildNodes)
    {
        Response.Write(child.LocalName);
        Response.Write(":");
        Response.Write(child.InnerText);
        Response.Write("\n");
    }

}
希望有帮助。如果它确实标记为答案。 -Milind

尝试以下代码

XmlDocument xDoc = new XmlDocument();
xDoc.Load("Server.MapPath("~/XMLFile.xml")");

XmlNodeList nodeList;
nodeList = xDoc.DocumentElement.SelectNodes("Employee");

foreach (XmlNode emp in nodeList)
{
    foreach (XmlNode child in emp.ChildNodes)
    {
        Response.Write(child.LocalName);
        Response.Write(":");
        Response.Write(child.InnerText);
        Response.Write("\n");
    }

}
希望有帮助。如果它确实标记为答案。
-Milind

这是硬编码。你不应该做硬编码。如果节点的名称或子节点的数量发生变化,该怎么办?Milind也删除了硬编码,并将其简化为最大值。这是硬编码。你不应该做硬编码。如果节点的名称或子节点的计数发生变化,该怎么办?milind也删除了硬编码,并将其简化为max。它不会写入innertext值。谢谢milind!记下你的答案。请查看编辑!:)@谢谢。很高兴我能帮忙。我找不到我的答案的任何更新。你能说出这些变化吗?它没有写入innertext值。谢谢你,米林!记下你的答案。请查看编辑!:)@谢谢。很高兴我能帮忙。我找不到我的答案的任何更新。你能告诉我变化吗?