【发布时间】:2017-11-06 13:14:43
【问题描述】:
我在 2 个 Xml 文档中并行迭代。当来自第一个 Xml 的元素值 X 是 等于第二个 Xml 中的值(例如 USD== USD),它应该写一个 具有两列的 DataTable 中的行。第一列中的元素值 X (USD) 以及来自第二列中第一个 Xml 的另一个子元素值 Y(来自 的值)。 第二个 Xml 有一个包含多个元素的节点。
DataTable dTable = new DataTable();
dTable.Columns.Add("ColumnOne");
dTable.Columns.Add("ColumnTwo");
DataRow dRow = null;
foreach (XmlNode nodeFirst in firstXmlDoc.SelectNodes("//ValCurs/Valute"))
{
foreach (XmlNode nodeSecond in secondXmlDoc.SelectSingleNode("SelectedVal"))
{
if (nodeFirst.SelectSingleNode("CharCode").InnerText == nodeSecond.InnerText)
{
dRow = dTable.NewRow();
dRow["ColumnOne"] = nodeFirst.SelectSingleNode("CharCode").InnerText;
dRow["ColumnTwo"] = nodeFirst.SelectSingleNode("Value").InnerText;
dTable.Rows.Add(dRow);
}
}
}
myDataGridView.DataSource = dTable;
这不起作用,我在 "nodeFirst.SelectSingleNode("Value").InnerText" 中得到一个空值 (" ") 并停止,只用 “CharCode” 值。 有趣的是,它在我运行它的前几次都有效,但现在就不行了。
第一个 XML:
<ValCurs>
<Valute ID="47">
<NumCode>978</NumCode>
<CharCode>EUR</CharCode>
<Nominal>1</Nominal>
<Name>Euro</Name>
<Value>20.3457</Value>
</Valute>
<Valute ID="44">
<NumCode>840</NumCode>
<CharCode>USD</CharCode>
<Nominal>1</Nominal>
<Name>Dolar S.U.A.</Name>
<Value>17.4603</Value>
</Valute>
...
</ValCurs>
第二个 Xml:
<SelectedVal>
<Cod>UAH</Cod>
<Cod>EUR</Cod>
<Cod>CAD</Cod>
<Cod>RON</Cod>
<Cod>NOK</Cod>
<Cod>RUB</Cod>
<Cod>JPY</Cod>
<Cod>AUD</Cod>
</SelectedVal>
【问题讨论】:
-
您需要共享 xmls