Как использовать xmlreader для чтения этого xml - PullRequest
2 голосов
/ 21 февраля 2012

Мой раздел 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;
        }
   }
}

, но как я могу прочитать содержимое, если в примечании есть текст.Если я использую reader.ReadInnerXml, он будет читать все, поэтому у меня не будет шанса увидеть, является ли это SpecialText XmlElement или просто текстом?

Большое спасибо

Ответы [ 2 ]

0 голосов
/ 21 февраля 2012

Теперь это может звучать снисходительно, но я думаю, что на это легко ответить, покопавшись в справочнике. С другой стороны, я не совсем понимаю вашу проблему. Если следующий ответ не является тем, что вы ищете, просто опубликуйте более подробную информацию, и я буду рад помочь.

Чтобы определить, является ли содержимое просто текстовым, просто проверьте его, а затем сделайте с ним все, что захотите:

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
}
0 голосов
/ 21 февраля 2012

Если вы используете 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;

Примечание: Get Path () здесь: https://github.com/ChuckSavage/XmlLib/blob/master/XElementExtensions.cs

...