0

我创建了以下格式的 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>

现在这是我用来显示数据的代码:

XmlTextReader reader = new XmlTextReader(Server.MapPath("~/XMLFile.xml"));
    while (reader.Read())
    {
        switch (reader.NodeType)
        {
            case XmlNodeType.Element: // The node is an element.
                Response.Write("<" + reader.Name + ">");
                break;
            case XmlNodeType.Text: //Display the text in each element.
                Response.Write(reader.Value + "<br />");
                break;
            case XmlNodeType.EndElement: //Display the end of the element.
                Response.Write("</" + reader.Name + ">");
                break;
        }
    }

现在我的输出是这样的:

Blah 
001 
ISDC 
Bleh 
002 
COE 
Bah 
003 
Roll_Out

我将如何显示标签和值?那就是我希望我的输出格式如下:

Name: Blah
ID: 001
Dept: COE

如果我在 XML 文件中仅在一个地方添加一个额外的元素,比如在 3 名员工的信息中添加一个额外的电子邮件标签,该怎么办?我将如何阅读?

4

4 回答 4

2
XDocument doc = XDocument.Load(Server.MapPath("~/XMLFile.xml"));

var rows = doc.Descendants("Employee").Select(e => new
{
    Name = e.Element("Name").Value,
    ID = e.Element("ID").Value,
    Dept = e.Element("Dept").Value
});

foreach (var row in rows)
{
    Response.Write(String.Format("Name: {0} <br />", row.Name));
    Response.Write(String.Format("ID: {0} <br />", row.ID));
    Response.Write(String.Format("Dept: {0} <br />", row.Dept));
}

或没有硬编码:

foreach (XElement x in doc.Descendants("Employee").Nodes())
{
    Response.Write(String.Format("{0}: {1} <br />", x.Name, x.Value));
}
于 2012-10-05T05:55:59.627 回答
1

为什么不使用 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,
                        });
于 2012-10-05T05:54:25.840 回答
1

试试下面的代码。

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");
    }

}

希望有帮助。如果它确实将其标记为答案。-米林德

于 2012-10-05T06:10:16.250 回答
0

我相信你做对了。如果您查看您的 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>
于 2012-10-05T06:05:08.000 回答