[英]how to get the suffix value from xml structure?
我將xml結構存儲在xmld字符串中,如abcd variable.test1,test2,test3是xml sructure的一部分。如何從test1,test2,test3中獲取后綴值1,2,3 ?
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>";
理想情況下,首先不要像這樣構造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);
}
}
我不確定您要實現的目標,但這並不是通常使用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>
元素名稱不應真正是動態的,給定元素的允許元素名稱列表通常應屬於固定(有限)列表
您可以嘗試以下方法:
Integer.parseInt(s.replaceAll("[\\D]", ""))
這還將刪除數字之間的非數字,因此“ test1test1x”變為11。
這有效:
var suffices =
XDocument
.Parse(abcd)
.Element("xmlstruct")
.Elements()
.Where(xe => xe.Name.ToString().StartsWith("test"))
.Select(xe => int.Parse(xe.Name.ToString().Substring(4)));
它返回:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.