5

現在、ファイルではなくmssqldbaseにxmlが保存されています。これが小さなサンプルです。

<NewDataSet>
<Table1>
<billTo_lastName>asdf</billTo_lastName>
<orderAmount>160.00</orderAmount>
<billTo_street1>asdf</billTo_street1>
<card_accountNumber>############1111</card_accountNumber>
</Table1>
</NewDataSet>

現在、結果をDatableで返しています。

上記を解析してページに表示するための最良の方法は何でしょうか。ページ表示は、情報を確認するためだけのものです。xmlに対して追加の処理は行われません。

これらの線に沿ってページに何かを表示したいと思います。

billTo_lastName: asdf
orderAmount: 160.00
etc.
4

3 に答える 3

7

処理方法によって異なります。1つの方法は、を作成してからLoadXmlXmlDocumentを呼び出すことです。

// get the data from the data table, into a string.

// then create an XML document and load the string
var doc = new XmlDocument();
doc.LoadXml(dataString);

Linq-to-Xmlを使用する場合は、XElementを作成します。

var element = XElement.Load(dataString);
于 2013-03-11T22:08:00.167 に答える
4

私を正しい方向に向けてくれたジムに感謝します。XmlDocumentsLoadXmlは問題なく動作します。次に、それをXmlNodeListに入れて、最上位ノードを選択することができました。XmlNodeを実行し、子ノードをループしました。

    DataTable dt = sqlselect(sqlQuery, parameter);
    var doc = new XmlDocument();
    doc.LoadXml(dt.Rows[0]["ua_post"].ToString());

    XmlNodeList nl = doc.SelectNodes("NewDataSet");
    XmlNode root = nl[0];

    foreach (XmlNode xnode in root.ChildNodes[0])
    {
        string name = xnode.Name;
        string value = xnode.InnerText;
        string nv = "<b>" + name + ":</b> " + value;
        Label1.Text += nv + " <br />" + Environment.NewLine;
    }

そして、私はページに簡単な表示をします。

    billTo_lastName: asdf 
    orderAmount: 160.00 
    billTo_street1: asdf 
    card_accountNumber: ############1111 
于 2013-03-12T14:02:53.707 に答える
0

それらをデータベースからDataTableに列として返し、ItemTemplatesで任意のデータコントロールを使用して表示できます。次に例を示します。

declare @xml as xml
set @xml = '<NewDataSet>
<Table1>
<billTo_lastName>asdf</billTo_lastName>
<orderAmount>160.00</orderAmount>
<billTo_street1>asdf</billTo_street1>
<card_accountNumber>############1111</card_accountNumber>
</Table1>
</NewDataSet>'

;with cte as (    
  select @xml xmlstring
)
SELECT 
xmlstring.value('(/NewDataSet//Table1/billTo_lastName/node())[1]','VARCHAR(100)')
 as billTo_lastName,
xmlstring.value('(/NewDataSet//Table1/orderAmount/node())[1]','VARCHAR(20)') 
as orderAmount
FROM cte

SQLデモ

于 2013-03-11T22:14:44.947 に答える