-->

如何获得通过tablerow出的XElement的?(How to get a tablerow o

2019-11-04 00:31发布

我有这样的XElement:

<adress name="company1" street="street1" City="city1" <branch key="1" value="branch1" /><language key="1" value="langauge1" /> </adress>

当你看到有在元素ADRESS几个属性和它继承的元素分支,其中还包含一些属性的语言。

我想这样的一个表:

name street city branchvalue branchkey languagevalue languagekey

我怎样才能做到这一点? 我可以硬编码,因为XML方案是每次相同,但,我想有一个充满活力和苗条的解决方案

Answer 1:

下面是做到这一点的一种方式的例子。 你真的应该做的空检查,而不是承担所有的属性都存在与价值,但如果你能相信它,在这里你去:

    string strElem = "<adress name=\"company1\" street=\"street1\" City=\"city1\"><branch key=\"1\" value=\"branch1\" /><language key=\"1\" value=\"langauge1\" /> </adress>";
    XElement xel = XElement.Parse(strElem);

    var branch = xel.Element("branch");
    var lang = xel.Element("language");

    var theTable = new {
        name = xel.Attribute("name").Value, 
        street = xel.Attribute("street").Value, 
        city = xel.Attribute("City").Value,
        branchkey = branch.Attribute("key").Value,
        branchvalue = branch.Attribute("value").Value,
        languagevalue = lang.Attribute("key").Value,
        languagekey = lang.Attribute("value").Value
        };

更新

在新的证据光......我还是不知道这是否适合您的需要,但你可以动态地创建一个字典。 从那里,你可以做你想做的数据什么:

            string strElem = "<adress name=\"company1\" street=\"street1\" City=\"city1\"><branch key=\"1\" value=\"branch1\" /><language key=\"1\" value=\"langauge1\" /> </adress>";
            XElement xel = XElement.Parse(strElem);

            var theTable = new ExpandoObject() as IDictionary<string, Object>;
            foreach (XAttribute attr in xel.Attributes())
            {
                theTable.Add(attr.Name.LocalName, attr.Value);
            }

            foreach (XElement el in xel.Elements())
            {
                foreach (XAttribute attr in el.Attributes())
                {
                    theTable.Add(el.Name + attr.Name.LocalName, attr.Value);
                }
            }



文章来源: How to get a tablerow out of an xelement?