2013-03-05 115 views
3

I在XmlDocument中加載了一個XML文檔。該文檔由綁定到給定模式的XmlReader裝載(由​​類)。獲取給定XML元素的所有有效屬性

如何獲得給定文檔節點元素的允許屬性列表?

XML看起來是這樣的,並具有可選的屬性:

<row attribute1="1" attribute2="2" attribute3="something"> 
<row attribute1="3" attribute3="something"> 
<row attribute2="1" attribute3="something"> 

列表應包含ATTRIBUTE1,attribute2,attribute3

感謝

+0

只是爲了澄清,你有一些你想讀的屬性和其他應該忽略的屬性,不是嗎?無論如何,你需要[linq to xml](http://msdn.microsoft.com/en-us/library/bb387098.aspx)。 – Leri 2013-03-05 09:29:36

+1

@PLB我非常喜歡Visual Studio 2005和.NET Framework 2.0 – sblandin 2013-03-05 10:52:48

回答

3

我使用VS2010但2.0框架。 因爲你有一個模式你知道屬性的名稱,我試着用你的XML樣本創建一個基本標籤。

XML

<base> 
     <row attribute1="1" attribute2="2" attribute3="something"/> 
     <row attribute1="3" attribute3="something"/> 
     <row attribute2="1" attribute3="something"/> 
</base> 

代碼隱藏

 XmlDocument xml = new XmlDocument(); 
     xml.Load(@"C:\test.xml"); 

     List<string> attributes = new List<string>(); 

     List<XmlNode> nodes = new List<XmlNode>(); 
     XmlNode node = xml.FirstChild; 
     foreach (XmlElement n in node.ChildNodes) 
     { 
      XmlAttributeCollection atributos = n.Attributes; 
      foreach (XmlAttribute at in atributos) 
      { 
       if(at.LocalName.Contains("attribute")) 
       { 
        attributes.Add(at.Value); 
       } 
      } 
     } 

它給所有屬性的列表。

+0

所以你基本上建議循環所有行元素並構建一組屬性。 if子句不應該是:if(!at.LocalName.Contains(「attribute」))? – sblandin 2013-03-06 16:05:38

+1

嗨。你想要的屬性包含「屬性」或不?如果你沒有LINQ,我能看到的唯一方法就是遍歷所有的節點。 – 2013-03-06 16:13:11

相關問題