我正在接收动态xml,我不知道属性名称,如果你看看xml和代码......我试着做一个简单的例子,我可以得到属性值,即“myName”, “myNextAttribute”和“blah”,但我无法获取属性名称,即“name”,“nextAttribute”和“etc1”。任何想法,我认为它必须是一件容易的事情我很想念......但我肯定会错过它。
static void Main(string[] args)
{
string xml = "<test name=\"myName\" nextAttribute=\"myNextAttribute\" etc1=\"blah\"/>";
TextReader sr = new StringReader(xml);
using (XmlReader xr = XmlReader.Create(sr))
{
while (xr.Read())
{
switch (xr.NodeType)
{
case XmlNodeType.Element:
if (xr.HasAttributes)
{
for (int i = 0; i < xr.AttributeCount; i++)
{
System.Windows.Forms.MessageBox.Show(xr.GetAttribute(i));
}
}
break;
default:
break;
}
}
}
}
答案 0 :(得分:25)
您可以在MSDN中看到:
if (reader.HasAttributes) {
Console.WriteLine("Attributes of <" + reader.Name + ">");
while (reader.MoveToNextAttribute()) {
Console.WriteLine(" {0}={1}", reader.Name, reader.Value);
}
// Move the reader back to the element node.
reader.MoveToElement();
}
答案 1 :(得分:0)
您的切换是不必要的,因为您只有一个案例,请尝试将其转换为您的if语句。
if (xr.NodeType && xr.HasAttributes)
{
...
}
请注意&amp;&amp;运算符按顺序求值,因此如果xr.NoteType为false,则忽略其余参数并跳过if块。