我将xml结构存储在xml字符串中,如abcd变量.test1,test2,test3是xml sructure.how的一部分,以从test1获取后缀值1,2,3,test2,test3
string abcd="<xmlstruct>
<test1>
<name>testname1</name>
<address>testaddress1</address>
<subject>testsub1<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>";
答案 0 :(得分:2)
理想情况下,首先不要像这样构建XML。这不是元素名称的好用。最好使用:
<test id="1">
...
</test>
<test id="2">
...
</test>
如果这些是原始类中包含单独变量的结果,则表明变量可能应该是单个集合。
如果您确实想要找到它们,您可以使用以下内容:
IEnumerable<string> ListSuffixes(XElement container, XName prefix)
{
string localPrefix = prefix.Name.LocalName;
var elements = container.Elements()
.Where(x => x.Name.Namespace == prefix.Name.Namespace
&& x.Name.LocalName
.StartsWith(localPrefix));
foreach (var element in elements)
{
yield return element.Name.LocalName.Substring(localPrefix.Length);
}
}
答案 1 :(得分:1)
我不完全确定您要实现的目标,但这并不是通常使用XML的方式。
要从上面的XML片段获取后缀(1,2,3),您可以解析XML,选择xmlstruct
元素的所有子元素,然后使用字符串操作。
然而,替代模式可能是更好的主意,例如将后缀分别存储为属性
<xmlstruct>
<test Suffix="1">
<name>testname1</name>
<address>testaddress1</address>
<subject>testsub1<subject>
</test>
<test Suffix="2">
<name>testname2</name>
<address>testaddress2</address>
<subject>testsub2<subject>
</test>
<test Suffix="3">
<name>testname3</name>
<address>testaddress3</address>
<subject>testsub3<subject>
</test>
</xmlstruct>
元素名称不应该是动态的,给定元素的允许元素名称列表通常应该属于固定(有限)列表
答案 2 :(得分:0)
你可以试试这个:
Integer.parseInt(s.replaceAll("[\\D]", ""))
这也将删除数字之间的非数字,因此“test1test1x”变为11。
答案 3 :(得分:0)
这有效:
var suffices =
XDocument
.Parse(abcd)
.Element("xmlstruct")
.Elements()
.Where(xe => xe.Name.ToString().StartsWith("test"))
.Select(xe => int.Parse(xe.Name.ToString().Substring(4)));
它返回: