从数据库中解析xml

时间:2013-03-11 21:59:13

标签: c# asp.net xml

目前我将xml存储在ms sql dbase中,不是文件。这是一个小样本。

<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.

3 个答案:

答案 0 :(得分:6)

取决于您希望如何处理它。一种方法是创建XmlDocument,然后调用LoadXml

// 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);

答案 1 :(得分:4)

感谢Jim指出我正确的方向。 XmlDocuments LoadXml工作得很好。 然后,我能够将其放入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 

答案 2 :(得分:0)

您可以将它们作为列从Database返回到DataTable中,然后使用任何带有ItemTemplates的datacontrol显示它们例如:

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 DEMO