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

そして、3 人の従業員の情報に追加の電子メール タグのように、XML ファイルの 1 か所だけに追加の要素を追加するとどうなるでしょうか。それをどう読むか。

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

次のコードを試してください。

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

于 2012-10-05T06:10:16.250 に答える
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 に答える
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 に答える