0

このトピックに関する質問を投稿しましたが、うまくいきませんでした。

私は asmx Web サービスを持っています。その Web サービスを使用して、特定の XSD スキーマを使用して特定の XML ドキュメントを解析します。最初に XML を文字列に変換し、次にそれを DataSet に入れるという方法で XML ドキュメントを解析します。私はデータセットを解析していて、それでデータをデータベースに渡します。

少し問題があります。この複雑なノードがあります。

<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を取得します。これが私が望んでいたことです。今は、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 に答える