0

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

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

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

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

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

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?

4

2 回答 2

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,这就是我想要的,现在我只需要写一个 pic 就可以得到 288.000,任何建议

于 2012-07-18T08:10:24.507 回答
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;

                                }

                            }

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

于 2012-07-18T12:13:52.070 回答