我有这样的设想:
while (reader.Read())
{
    if (reader.NodeType == XmlNodeType.Element && reader.Name == itemElementName)
    {
        XElement item = null;
        try
        {
            item = XElement.ReadFrom(reader) as XElement;
        }
        catch (XmlException ex)
        {
           //log line number and stuff from XmlException class  
        }
    }
}在上面的循环中,我将某个节点(itemElementName)转换为XElement。
有些节点将是良好的XML,并将进入XElement,然而,有些节点则不会。
在这个过程中,我不仅要抓住标准的XmlException的东西.我还想获取当前Xml的摘录和字符串。
但是,如果在将节点传递给XElement之前对节点执行任何类型的读取操作,则会将读取器向前移动。
如何在不干扰其位置的情况下获得阅读器OuterXml内容的“快照”?
发布于 2015-07-17 16:56:54
另一个想法是:读取外部XML (这会提升读取器),然后从这个XML创建一个新的读取器,它允许您“返回”并处理当前节点的元素。
while (r.ReadToFollowing("ParentNode"))
{
    parentXml = r.ReadOuterXml();
    //since ReadOuterXml() advances the reader to the next parent node, create a new reader to read the remaining elements of the current parent
    XmlReader r2 = XmlReader.Create(new StringReader(parentXml));
    r2.ReadToFollowing("ChildNode");
    childValue = r2.ReadElementContentAsString();
    r2.Close();
}                  https://stackoverflow.com/questions/2947760
复制相似问题