0

linq to xml を使用して、データベース テーブルから名前と電子メール アドレスのリストを読み取る方法が必要です。リストを xml 文字列に生成した後、リストを人 (ノード) ごとに循環させ、生成された xml 部分文字列に xslt を適用し、html を生成し、生成された html を使用して人に送信する方法が必要です。 ) 電子メールとして。たとえば、次の xml レイアウトを考えています。 <persons> <person> <firstname> <middlename> <lastname> <emailaddress> </person> </persons>

この例では、何らかの形で for ループのように xml をトラバースし、各 person ノードにアクセスしてノードを取得し<person> .. </person>、一度に 1 つのノードを変換する必要があります。

特定の状況では、生成されたすべての文字も印刷する必要があります。

この方法で xml をトラバースし、その後 person ノードから変換するにはどうすればよいでしょうか? <person> .. </person>文字列形式が必要なようです。

4

1 に答える 1

0

Serializable Personクラスを使用しないのはなぜですか?C#はXMLシリアル化のサポートを提供します。サーバーからの生のテキストが適切なXML形式である限り、それをXMLファイルにダンプし、組み込みのC#サポートに依存することで、多くの作業を回避できる可能性があります。または、LINQを使用してデータベースをクラスにマップします。

私は確かにLINQに精通していませんが、この記事では、LINQを使用してデータベースをクラスにマップする非常に明確な方法を提供します。これにより、XMLファイルを生成し、組み込みのSerializer、Deserializer、およびXSL変換を使用して、データを好きなように処理します。

XmlSerializer s = new XmlSerializer(typeof(Person[]));
people = (Person[])s.Deserialize(file); // Serialize is almost identical
file.close();

XMLをファイルからC#クラスにロードする簡単な方法を提供します(または単にLINQを使用してSQLをクラスに接続します)。組み込みのXLSTサポートを使用して、XMLファイルを取得し、XSLスタイルシートで変換できます。

XPathDocument x = new XPathDocument(xmlFile);
XslCompiledTransform xsl = new XslCompiledTransform();
xsl.Load(xslStyleSheet);
XmlTextWriter writer = new XmlTextWriter("result.html", null);
xsl.Transform(x, null, writer);

その世話をする必要があります-この答えから。生の文字列でそれを行うことができる方法があると確信していますが、本当に必要でない限り、なぜわざわざするのですか?

于 2012-11-28T22:16:25.793 に答える