Here is a sample xml
<?xml version="1.0"?>
<catalog>
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
<genre>Computer</genre>
<price>44.95</price>
<publish_date>2000-10-01</publish_date>
<description>An in-depth look at creating applications
with XML.</description>
</book>
<book id="bk102">
<author>Ralls, Kim</author>
<title>Midnight Rain</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2000-12-16</publish_date>
<description>A former architect battles corporate zombies,
an evil sorceress, and her own childhood to become queen
of the world.</description>
</book>
<book id="bk102">
<author>Corets, Eva</author>
<title>Maeve Ascendant</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2000-11-17</publish_date>
<description>After the collapse of a nanotechnology
society in England, the young survivors lay the
foundation for a new society.</description>
</book>
<book id="bk103">
<author>Corets, Eva</author>
<title>Oberon's Legacy</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2001-03-10</publish_date>
<description>In post-apocalypse England, the mysterious
agent known only as Oberon helps to create a new life
for the inhabitants of London. Sequel to Maeve
Ascendant.</description>
</book>
</catalog>
How do I check whether or not the values of the attribute id in the nodes <book>
are in ascending order, also find if there are duplicate values in it in the simplest possible way.
I did
static void Main(string[] args)
{
XDocument myfile = XDocument.Parse(File.ReadAllText(@"D:\sample_xml.xml"));
var check = myfile.Descendants("book").Select(a => a.Attribute("id").Value.Substring(2)).ToArray();
if (IsSortedAscending(check))
{
Console.WriteLine("Sorted in Ascending order");
}
else
{
Console.WriteLine("Check Sequence");
}
Console.ReadLine();
}
public static bool IsSortedAscending(string[] arr)
{
for (int i = arr.Length - 2; i >= 0; i--)
{
if (arr[i].CompareTo(arr[i + 1]) > 0)
{
return false;
}
}
return true;
}
But it doesn't account for duplicate values...How do I do that?
Also, is it possible to find the missing value(if any) in the attribute id, e.x. if there is bk109 and the next one is bk112 then the program will show that bk110 and bk111 are missing.