如何使用xmlreader读取此xml

时间:2012-02-21 16:58:56

标签: c# xml xmlreader

我的xml部分是这样的:

<Note>
<SpecialText att1="" />
</Note>

<Note>
This is a note.
</Note>

我需要的是使用XmlReader来读取xml,但我不确定如何确定innerXml是另一个xmlelement还是只是文本。

我这样做:

while (reader.Read())
{
    if (reader.NodeType == XmlNodeType.Element)
    {
        switch (reader.LocalName.ToLower())
        {
            case MMLElement.SpecialText:
            //// read related attributes
            break;
        }
   }
}

但是如果Note下的内容只是文本,我该如何阅读内容。 如果我使用reader.ReadInnerXml,它会读取所有内容,所以我没有机会看到它是SpecialText XmlElement还是只是文本?

非常感谢

2 个答案:

答案 0 :(得分:0)

如果您使用XElement.Load(file),则可以使用...

XElement xfile = XElement.Load(file);
XElement note = xfile.Path("path/to/note");
if(note.HasElements) 
    // read the element
else 
    string text = (string)note;

注意:在此处获取路径():https://github.com/ChuckSavage/XmlLib/blob/master/XElementExtensions.cs

答案 1 :(得分:0)

现在这可能听起来居高临下,但我认为这可以通过挖掘参考来轻松回答。然后我可能不完全理解你的问题。如果以下答案不符合您的要求,请发布更多详情,我将很乐意为您提供帮助。

要确定内容是否只是文本,只需检查它,然后随意使用它:

while (reader.Read())             
    {             
    if (reader.NodeType == XmlNodeType.Element)             
    {             
        switch (reader.LocalName.ToLower())             
        {             
            case MMLElement.SpecialText:             
            //// read related attributes             
            break;             
        }             
    }             

    else if (reader.NodeType == XmlNodeType.Text) 
    { 
      string thisIsjustText = reader.value;
    }
    //whatever comes next
}