从数据集中读取xml

时间:2012-07-17 11:07:26

标签: c# xml datareader

我发布了一个关于这个主题的问题,但没有运气,所以这里有:

我有一个asmx Web服务,使用该Web服务我使用给定的XSD架构解析给定的XML文档。我以一种方式解析XML文档,首先我将XML转换为字符串,然后将其放入DataSet中。我正在解析数据集,并将数据传递给数据库。

我有一点问题,我有这个复杂的节点:

<QuantityInIssueUnit uom="KO">288.000</QuantityInIssueUnit> 

我必须提取“KO”和“288.000”值,使用xsd我写了这段代码:

if (!dr_art_line.Table.Columns.Contains("QuantityInIssueUnit") || dr_art_line["QuantityInIssueUnit"].ToString().Length <= 0)
{
    QuantityInIssueUnit.Value = 0;
    QuantityInIssueUnit.uom = "";
}
else
{
    QuantityInIssueUnit.Value = Convert.ToDecimal(dr_art_line["QuantityInIssueUnit"]);
    QuantityInIssueUnit.Value = QuantityInIssueUnit.Value.ToString().Length > 15 ? Convert.ToDecimal(QuantityInIssueUnit.Value.ToString().Substring(0, 14)) : QuantityInIssueUnit.Value;

    QuantityInIssueUnit.uom = Convert.ToString(dr_art_line["QuantityInIssueUnit uom"]);
}

但是,它没有用,我假设没有节点“QuantityInIssueUnit”,它总是0 ......

有没有办法写这个但是使用DataRow?

2 个答案:

答案 0 :(得分:0)

到目前为止,我写了这段代码并且它正在运行:

using (XmlReader reader = XmlReader.Create(new StringReader(str)))
                            {
                                //UOM
                                reader.ReadToFollowing("QuantityInIssueUnit");
                                reader.MoveToFirstAttribute();
                                string value = reader.Value;
                                QuantityInIssueUnit_uom = value;  
                            }

我得到QuantityInIssueUnit_uom = KO,这就是我想要的,现在我只需要写一个pice来获得288.000,任何建议

答案 1 :(得分:0)

这也是值288的代码

using (XmlReader reader = XmlReader.Create(new StringReader(str)))
                            {
                                reader.ReadToFollowing("QuantityInIssueUnit");

                                if (reader.Read())
                                {
                                    // I want to get all the TEXT contents from the this node
                                    QuantityInIssueUnit_value = reader.Value;

                                }

                            }

它有点不同但它有效......