我的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还是只是文本?
非常感谢
答案 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
}