我正在使用XElement创建一个内存中的Xml树。这是我的xml示例:
<Curve>
<Function>createCurve</Function>
<Parameters>
<Input>
<BaseCurve>
<CurveType Type="String">16fSmoothCurve</CurveType>
<Ccy Type="String">USD</Ccy>
<Tenors>
<Item Type="String">1M</Item>
<Item Type="String">3M</Item>
<Item Type="String">1U</Item>
<Item Type="String">Z1</Item>
</Tenors>
<Rates>
<Item Type="String">.02123</Item>
<Item Type="String">.02214</Item>
<Item Type="String">.021234</Item>
<Item Type="String">.02674</Item>
</Rates>
</BaseCurve>
</Input>
</Parameters>
</Curve>
我通过将XElements链接在一起来创建xml。例如,
var root = new XElement("Curve",
new XElement("Function", "createCurve"),
new XElement("Parameters"), etc);
然后我想通过XPath查询XElement。例如,
var tenors = root.XPathSelectElements("//Tenors/Item");
var rates = root.XPathSelectElements("//Rates/Item");
我可以成功选择一个元素,例如
var firstTenor = root.XPathSelectElement("//Tenors/Item");
var firstRate = root.XPathSelectElement("//Rates/Item");
但是,尝试选择多个元素会给我0个结果。
我已经尝试创建一个XDocument并查询它然而我得到相同的结果。我也尝试在树的开头添加一个XDeclaration,但没有运气。
为什么我不能从XElement树中查询多个元素?
谢谢!
德鲁
答案 0 :(得分:-3)
使用XmlNodeList:
XmlNodeList nodesXml = root.SelectNodes("//Tenors/Item");
foreach (XmlNode item in nodList)
{
var tenors = item.InnerText;
}
我所做的就是完美的。