0

次の形式の xml ドキュメントがあります。

<?xml version="1.0" encoding="UTF-8"?>
<person name="Bob" addr_street="123 Fake St" 
        addr_city="Springfield" addr_state="IL"/>

このデータを取得してFigureOutZipCode(string city, string state)、コード内の関数で実行したいと思います。

次に、この結合されたデータをすべて取得して、次の形式で新しいドキュメントを作成したいと思います。

<?xml version="1.0" encoding="UTF-8"?>
<people>
    <person>
        <name>Bob</name>
        <address>
            <street>123 Fake St</address>
            <city>Springfield</city>
            <state>IL</state>
            <zip>00000</zip>
        </address>
    </person>
</people>

入力 xml からすべてのデータを解析し、計算を行ってから、新しい出力 xml を作成するだけでよいことはわかっていますが、これを行うためのよりきちんとした/より良い方法はありますか? おそらく、xsltを使用するようなものですか?

もしそうなら、それを行う方法についていくつかのガイダンスを提供していただけますか?

4

3 に答える 3

1

実際、XSLT を使用すると、元の XML を変換し、同じ XSLT シートを使用して新しい (変換された) XML ファイルを出力できますresult-document。これには、http ://saxon.sourceforge.net/ から入手できる Saxon .NET XSLT パーサーが必要です。

ここでの使用に関する情報result-document: http://saxonica.com/documentation9.4-demo/html/xsl-elements/result-document.html

XSLT の学習には、Michael Kay (Saxon の作成者) によるものをお勧めします。

于 2013-04-24T21:40:51.507 に答える
0

LINQ を使用して XML を新しい形式に変換する

string URL = @"location";
XDocument doc = XDocument.Load(URL);

XElement newDoc = new XElement("people",
            from p in doc.Descendants("person")
            select new XElement("person", 
                new XElement("name", p.Attribute("name").Value),
                new XElement("address",
                    new XElement("street", p.Attribute("addr_street").Value),
                    new XElement("city", p.Attribute("addr_city").Value),
                    new XElement("state", p.Attribute("addr_state").Value),
                    new XElement("zip", GetZip(parameters))
                    )
            )
            );
于 2013-04-24T21:36:46.157 に答える