有没有办法使用循环访问xml值?

时间:2012-10-15 10:12:28

标签: c# xml c#-4.0 xml-parsing xml-serialization

我已将xml结构存储到字符串 abcd

    string abcd="<xmlstruct>
    <test>
        <name>testname</name>
        <address>testaddress</address>
        <subject>testsub<subject>
    </test>

    <test1>
        <name>testname1</name>
        <address>testaddress1</address>
        <subject>testsub<subject>
    </test1>

    <test2>
        <name>testname2</name>
        <address>testaddress2</address>
        <subject>testsub2<subject>
    </test2>

    <test3>
        <name>testname3</name>
        <address>testaddress3</address>
        <subject>testsub3<subject>
    </test3>


    </xmlstruct>";

我从字符串中检索了xml值,如

var xElem = XElement.Parse(abcd);
string getname =  xElem.Element("test").Element("name").Value;
string getname1 = xElem.Element("test1").Element("name").Value;
string getname2 = xElem.Element("test2").Element("name").Value;
string getname3 = xElem.Element("test3").Element("name").Value;

工作正常。我的问题是,“有没有办法制作循环并获得测试,test1,test2,test3值?”

1 个答案:

答案 0 :(得分:2)

您对"test0"的选择有点不规范,但应该这样做:

for (int i = 0; i < N; i++)
{
   string suffix = i > 0 ? i.ToString() : "";
   string getname =  xElem.Element("test"+suffix).Element("name").Value;
   ...
}

但是你可能应该研究一个更好的XML结构,比如

<test id="1">
    <name>testname2</name>
    <address>testaddress2</address>
    <subject>testsub2<subject>
</test>