我在使用xmlReader读取字符串(xml结构)时遇到了麻烦。XmlReader - 读取子女
string xml = @"
<Data>
<Prices Id="16" Code="C3" >
<Units>
<Unit Id="17"/>
</Units>
</Prices>
<Units>
<Unit Id="1" IsActive="true" />
<Unit Id="2" IsActive="true" />
</Units>
<Product Id="16" Code="C3" >
<Names>
<Name NameVersion="1" Name="C3 " />
</Names>
<Units>
<Unit Id="16"/>
</Units>
</Product>
</Data>
"
我怎么能只读元素“单位”与孩子的ID 1和2?
其实我试着把这个字符串解析成XDocument。
var root = XElement.Parse(xmlFile);
var units = root.Elements("Units").FirstOrDefault();
它工作正常,但我可以使用真正的大XML,我不想解析所有字符串到XDocument。我正在寻找方法,我可以从字符串中加载部分元素。我也试着做到这一点使用XmlTextReader的,但这在我的情况不工作
using (XmlReader xmlTextReader = XmlReader.Create(new StringReader(xmlFile)))
{
if (xmlTextReader.ReadToFollowing(elementName))
{
bool isOnNode = xmlTextReader.ReadToDescendant(elementName);
while (isOnNode)
{
yield return XNode.ReadFrom(xmlTextReader) as XElement;
if (!xmlTextReader.IsStartElement(elementName))
isOnNode = xmlTextReader.ReadToNextSibling(elementName);
}
}
}
预期输出:的XElement =
如果这是一个C#问题,那么请您出示的代码,并解释究竟是什么你的“麻烦”是。 –
你有什么试过的?你期望输出是什么?为这样一个小XML文档使用这样一个低级别的API是什么原因? LINQ to XML将使这个微不足道。 –
我更新了帖子。我只想读取Data的直接子对象“Units”元素 – adamo94