如何将xml以下的所有“cc”属性值转换为字符串数组
<DD a="1" b="2" c="3">
<D aa="11" bb="22" cc="33"/>
<D aa="11" bb="22" cc="33"/>
<D aa="11" bb="22" cc="33"/>
</DD>
我试过的案例:
foreach (XmlNode xD in DD) {
XmlElement getFDD = (XmlElement)DD;
for (int x = 0; x < DD.ChildNodes.Count; x++)
{
XmlElement XmlFV = (XmlElement)DD.ChildNodes[x];
stringArr[x] = XmlFV.GetAttribute("CC");
}
}
并且
for (int u = 0; u < DD.Count; u++)
{
getFDD = (XmlElement)DD[u].FirstChild;
XmlElement getFDD1 = (XmlElement)getFDD;
stringArr[u]=getFDD1.GetAttribute("cc");
}
我尝试使用foreach循环遍历每个节点,我放弃了尝试。
答案 0 :(得分:2)
您可以使用LINQ2XML:
const string xml = @"
<DD a=""1"" b=""2"" c=""3"">
<D aa=""11"" bb=""22"" cc=""33""/>
<D aa=""11"" bb=""22"" cc=""33""/>
<D aa=""11"" bb=""22"" cc=""33""/>
</DD>";
var doc = XDocument.Parse(xml);
var res = doc.Element("DD") // Get the root element DD
.Elements("D") // Extract all sub-elements D
.Select(e => e.Attribute("cc").Value) // Extract attribute cc
.ToList();
以下是没有LINQ2XML的方法:
XmlReader r = XmlReader.Create(new StringReader(xml));
IList<string> res = new List<string>();
while (r.Read()) {
if (r.IsStartElement("D")) {
res.Add(r.GetAttribute("cc"));
}
}
答案 1 :(得分:2)
这适用于.Net 2.0
var doc = new XmlDocument();
doc.Load(fname);
List<string> list = new List<string>();
foreach(XmlNode node in doc.GetElementsByTagName("D"))
{
list.Add(node.Attributes["cc"].Value);
}
答案 2 :(得分:1)
使用Linq2Xml
XElement doc=XElement.Load(yourXmlPath);
String[] attr=doc.Elements("D")
.Select(x=>(String)x.Attribute("cc"))
.ToArray();