Parse XML (Array with Index) to List<Object> - c#

I have following XML File:
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<T3RecordDocument>
<header type="array">
<charset>utf-8</charset>
<XMLversion>1.0</XMLversion>
<meta type="array">
<title></title>
<description></description>
<notes></notes>
<packager_username>xxxadmin</packager_username>
<packager_name>Firstname</packager_name>
<packager_email>name#domain.com</packager_email>
<TYPO3_version>4.5.26</TYPO3_version>
<created>Thursday 27. June 2013</created>
</meta>
<static_tables index="relStaticTables" type="array">
</static_tables>
<excludeMap type="array">
</excludeMap>
<softrefCfg type="array">
</softrefCfg>
<extensionDependencies type="array">
</extensionDependencies>
<records type="array">
<table index="tx_nfcacedata_lawyer" type="array">
<rec index="678" type="array">
<uid>678</uid>
<pid>233</pid>
<title>Partner & Partner, City</title>
<size>536</size>
<relations index="rels" type="array">
<element index="tx_nfcacedata_county:137" type="array">
<id>137</id>
<table>tx_nfcacedata_county</table>
</element>
</relations>
<softrefs type="array">
</softrefs>
</rec>
<rec index="679" type="array">
<uid>679</uid>
<pid>233</pid>
<title>Name2, City2</title>
<size>530</size>
<relations index="rels" type="array">
<element index="tx_nfcacedata_county:137" type="array">
<id>137</id>
<table>tx_nfcacedata_county</table>
</element>
</relations>
<softrefs type="array">
</softrefs>
</rec>
</table>
</records>
<pid_lookup type="array">
<page_contents index="233" type="array">
<table index="tx_nfcacedata_lawyer" type="array">
<item index="678">1</item>
<item index="679">1</item>
</table>
</page_contents>
</pid_lookup>
</header>
<records type="array">
<tablerow index="tx_nfcacedata_lawyer:678" type="array">
<fieldlist index="data" type="array">
<field index="uid">678</field>
<field index="pid">233</field>
<field index="tstamp">1321450985</field>
<field index="crdate">1250858888</field>
<field index="cruser_id">2</field>
<field index="deleted">0</field>
<field index="name">Partner & Partner</field>
<field index="street">Street 49</field>
<field index="zip">137</field>
<field index="phone">0123 123456</field>
<field index="fax">0123 1234560</field>
<field index="web">www.domain.de</field>
<field index="mail">info#domain.de</field>
<field index="mobile"></field>
<field index="zip_internal">12345</field>
<field index="city_internal">City</field>
<field index="latitude">10.0347062</field>
<field index="longitude">20.7524338</field>
</fieldlist>
<related index="rels" type="array">
<field index="zip" type="array">
<type>db</type>
<relations index="itemArray" type="array">
<element index="0" type="array">
<id>137</id>
<table>tx_nfcacedata_county</table>
</element>
</relations>
</field>
</related>
</tablerow>
<tablerow index="tx_nfcacedata_lawyer:679" type="array">
<fieldlist index="data" type="array">
<field index="uid">679</field>
<field index="pid">233</field>
<field index="tstamp">1257856437</field>
<field index="crdate">1250858888</field>
<field index="cruser_id">2</field>
<field index="deleted">0</field>
<field index="name">Name2</field>
<field index="street">Street 5</field>
<field index="zip">137</field>
<field index="phone">0234 12345678</field>
<field index="fax">0234 123456780</field>
<field index="web">www.domain2.de</field>
<field index="mail">info#domain2.de</field>
<field index="mobile"></field>
<field index="zip_internal">12345</field>
<field index="city_internal">City2</field>
<field index="latitude">10.0523024</field>
<field index="longitude">20.8061242</field>
</fieldlist>
<related index="rels" type="array">
<field index="zip" type="array">
<type>db</type>
<relations index="itemArray" type="array">
<element index="0" type="array">
<id>137</id>
<table>tx_nfcacedata_county</table>
</element>
</relations>
</field>
</related>
</tablerow>
</records>
</T3RecordDocument>
And I am currently parsing it with following code:
XDocument xdoc = XDocument.Parse(XML);
foreach (var descendant in xdoc.Descendants("records").Descendants("tablerow").Descendants("fieldlist"))
{
Lawyer tempLawyer = new Lawyer();
foreach (var item in descendant.Elements())
{
switch (item.Attributes().First().Value)
{
case "name":
tempLawyer.name = item.Value;
break;
case "street":
tempLawyer.street = item.Value;
break;
case "zip_internal":
tempLawyer.zip = item.Value;
break;
case "city_internal":
tempLawyer.city = item.Value;
break;
case "phone":
tempLawyer.phone = item.Value;
break;
case "fax":
tempLawyer.fax = item.Value;
break;
case "web":
tempLawyer.web = item.Value;
break;
case "latitude":
tempLawyer.lat = item.Value;
break;
case "longitude":
tempLawyer.lng = item.Value;
break;
}
}
list_Lawyer.Add(tempLawyer);
}
It's working, but maybe there is a more simpler and faster way to achieve what I want.
Maybe something like this:
var tempList = from element in
xdoc.Descendants("records").Descendants("tablerow").Descendants("fieldlist").Elements()
select new
{
name = (string)element.Attribute("name").Value,
street = (string)element.Attribute("street").Value,
zip = (string)element.Attribute("zip_internal").Value,
city = (string)element.Attribute("city_internal").Value,
phone = (string)element.Attribute("phone").Value,
fax = (string)element.Attribute("fax").Value,
web = (string)element.Attribute("web").Value,
lat = (string)element.Attribute("latitude").Value,
lng = (string)element.Attribute("longitude").Value,
};
This code isn't working because the element's attribute is index="XXXXXX" and not XXXXXX, maybe someone can lead me into the right direction.

from element in xdoc.Descendants("fieldlist")
select new {
Name = element.Elements("field")
.Single(e => e.Attribute("index").Value == "name")
.Value,
...

Related

Parsing XML Document in C#

I am writing a C# code to parse the following XML doc :
<?xml version="1.0" encoding="utf-8" ?>
<teams>
<team id="1">
<name>RealMadrid</name>
<players>
<player id="1" role="Forward">
<firstname>Cristiano</firstname>
<lastname>Ronaldo</lastname>
<number>7</number>
</player>
<player id="2" role="Forward">
<firstname>Gareth</firstname>
<lastname>Bale</lastname>
<number>11</number>
</player>
<player id="3" role="Midfield">
<firstname>Toni</firstname>
<lastname>Kroos</lastname>
<number>8</number>
</player>
<player id="4" role="Midfield">
<firstname>Luka</firstname>
<lastname>Modric</lastname>
<number>19</number>
</player>
<player id="5" role="Defence">
<firstname>Sergio</firstname>
<lastname>Ramos</lastname>
<number>4</number>
</player>
<player id="6" role="Defence">
<firstname>Raphael</firstname>
<lastname>Varane</lastname>
<number>2</number>
</player>
<player id="7" role="Goalkeeper">
<firstname>Keylor</firstname>
<lastname>Navas</lastname>
<number>1</number>
</player>
</players>
</team>
<team id="2">
<name>Barcelona</name>
<players>
<player id="1" role="Forward">
<firstname>Lionel</firstname>
<lastname>Messi</lastname>
<number>10</number>
</player>
<player id="2" role="Forward">
<firstname>Neymar</firstname>
<lastname>Jr.</lastname>
<number>11</number>
</player>
<player id="3" role="Midfield">
<firstname>Ivan</firstname>
<lastname>Rakitic</lastname>
<number>4</number>
</player>
<player id="4" role="Midfield">
<firstname>Andres</firstname>
<lastname>Iniesta</lastname>
<number>8</number>
</player>
<player id="5" role="Defence">
<firstname>Gerard</firstname>
<lastname>Pique</lastname>
<number>3</number>
</player>
<player id="6" role="Defence">
<firstname>Javier</firstname>
<lastname>Mascherano</lastname>
<number>14</number>
</player>
<player id="7" role="Goalkeeper">
<firstname>Andre</firstname>
<lastname>Ter Stegen</lastname>
<number>1</number>
</player>
</players>
</team>
<team id="3">
<name>Liverpool</name>
<players>
<player id="1" role="Forward">
<firstname>Daniel</firstname>
<lastname>Sturridge</lastname>
<number>15</number>
</player>
<player id="2" role="Forward">
<firstname>Roberto</firstname>
<lastname>Firmino</lastname>
<number>11</number>
</player>
<player id="3" role="Midfield">
<firstname>Philippe</firstname>
<lastname>Coutinho</lastname>
<number>10</number>
</player>
<player id="4" role="Midfield">
<firstname>Adam</firstname>
<lastname>Lallana</lastname>
<number>20</number>
</player>
<player id="5" role="Defence">
<firstname>Joel</firstname>
<lastname>Matip</lastname>
<number>32</number>
</player>
<player id="6" role="Defence">
<firstname>Dejan</firstname>
<lastname>Lovren</lastname>
<number>6</number>
</player>
<player id="7" role="Goalkeeper">
<firstname>Simon</firstname>
<lastname>Mignolet</lastname>
<number>22</number>
</player>
</players>
</team>
</teams>
I want to write the firstname and lastname for players of a specific team.
I wrote the following code :
var realTeam = from db in xelement.Elements("team")
where (string)db.Element("name")=="RealMadrid"
select db;
//Console.WriteLine("Real Madrid");
foreach (var e in realTeam)
{
Console.WriteLine(e);
}
This code is giving all the xml part related to "RealMadrid".
What should I do write on the firstname and lastname of this part?
Any help is appreciated!!
Do it like this:
var xmlContent = "YOUR XML";
var xmlDoc = XDocument.Parse(xmlContent);
var realTeamName = "RealMadrid";
var realTeam = from team in xmlDoc.Elements("teams")
.Descendants("team")
where team.Element("name").Value == realTeamName
select team;
var players = realTeam.Elements("players").Elements(); // get players
foreach (var player in players) // iterate over players
{
Console.WriteLine("First name: " + player.Element("firstname").Value);
Console.WriteLine("Last name: " + player.Element("lastname").Value);
}
So far you've got the team, but now you need to step into the team elements to get the players list and then the single player with firstname, lastname....
As I mentioned in my comment, you're not selecting the players element in your statement. Try the following:
var realTeam = from db in xelement.Elements("team")
where (string)db.Element("name")=="RealMadrid"
select db.Elements("players");
//Console.WriteLine("Real Madrid");
if (realTeam.Count() != 1)
{
//more than 1 team called RealMadrid was found, handle this case here
return;
}
foreach (var e in realTeam.Single())
{
Console.WriteLine("First Name: " + e.Element("firstname").Value); //or e.Element("firstname").ToString()
Console.WriteLine("Last Name: " + e.Element("lastname").Value);
}

XML to DataSet conversion is giving me error

I am converting XML data to dataset with following code:
Public Function ReadXML(ByVal xmlData As String) As DataSet
Dim stream As StringReader = Nothing
Dim reader As XmlTextReader = Nothing
Try
Dim xmlDS As New DataSet()
stream = New StringReader(xmlData)
' Load the XmlTextReader from the stream
reader = New XmlTextReader(stream)
xmlDS.ReadXml(reader)
Return xmlDS
Catch
Return Nothing
Finally
If reader IsNot Nothing Then
reader.Close()
End If
End Try
End Function
xmlData is parameter to function which gives path to xml file.
when the code is on line:
xmlDS.ReadXml(reader) it throws me error:
XMLException was caught: Data at the root level is invalid. Line 1, position 1.
I am not able to understand why is this happening.
Please help me, Answer in c# can also help me.
C# equivalent function for this:
public DataSet ConvertXMLToDataSet(string xmlData)
{
StringReader stream = null;
XmlTextReader reader = null;
try
{
DataSet xmlDS = new DataSet() ;
stream = new StringReader(xmlData);
// Load the XmlTextReader from the stream
reader = new XmlTextReader(stream);
xmlDS.ReadXml(reader);
return xmlDS;
}
catch
{
return null;
}
finally
{
if(reader != null) reader.Close();
}
}// Use this function to get XML string from a dataset
Please help me.
XML:
<?xml version="1.0" encoding="UTF-8"?>
-<movieinfo creationdate="8/30/2013 11:32:21 AM"> -<localizedtemplatetexts> <field label="Movie Details" id="ttMovieDetails"/> <field label="Cast" id="ttCast"/> <field label="Crew" id="ttCrew"/> <field label="Disc" id="ttDisc"/> <field label="Edition Details" id="ttProductDetails"/> <field label="Personal Details" id="ttPersonalDetails"/> <field label="Episodes" id="ttEpisodeDetails"/> <field label="Images" id="ttImageLinkDetails"/> <field label="Images" id="ttMCEToggleImages"/> <field label="List" id="ttMCEToggleList"/> <field label="First" id="ttFirst"/> <field label="Previous" id="ttPrev"/> <field label="Up" id="ttUp"/> <field label="Next" id="ttNext"/> <field label="Last" id="ttLast"/> <field label="Buy this movie online" id="ttBuyOnline"/> </localizedtemplatetexts> -<moviemetadata> <field label="Index" id="dfIndex" name="Index"/> <field label="Loaned To" id="dfLoaner" name="Loaned To"/> <field label="Loan Date" id="dfLoanDate" name="Loan Date"/> <field label="Due Date" id="dfDueDate" name="Due Date"/> <field label="Overdue" id="dfIsOverdue" name="Overdue"/> <field label="Return Date" id="dfReturnDate" name="Return Date"/> <field label="Loan Notes" id="dfLoanNotes" name="Loan Notes"/> <field label="Loaner Email" id="dfLoanEmail" name="Loaner Email"/> <field label="Loaner Address" id="dfLoanAddress" name="Loaner Address"/> <field label="Title" id="dfLoanTitle" name="Title"/> <field label="Title" id="dfTitle" name="Title"/> <field label="Title Sort" id="dfTitleSort" name="Title Sort"/> <field label="Title Extension" id="dfTitleExtension" name="Title Extension"/> <field label="Collection Status" id="dfCollectionStatus" name="Collection Status"/> <field label="Plot" id="dfPlot" name="Plot"/> <field label="Running Time" id="dfRunTime" name="Running Time"/> <field label="No. of Disks/Tapes" id="dfNrItems" name="No. of Disks/Tapes"/> <field label="Barcode" id="dfUPC" name="Barcode"/> <field label="Movie Release Date" id="dfReleaseDate" name="Movie Release Date"/> <field label="Release Date" id="dfDVDReleaseDate" name="Release Date"/> <field label="IMDb Number" id="dfIMDBNumber" name="IMDb Number"/> <field label="IMDb Rating" id="dfIMDBRating" name="IMDb Rating"/> <field label="TMDb ID" id="dfMovieDbID" name="TMDb ID"/> <field label="Color" id="dfColor" name="Color"/> <field label="Layers" id="dfLayers" name="Layers"/> <field label="Front Cover" id="dfCoverFront" name="Front Cover"/> <field label="Back Cover" id="dfCoverBack" name="Back Cover"/> <field label="Movie Poster" id="dfMoviePoster" name="Movie Poster"/> <field label="Backdrop" id="dfBackDrop" name="Backdrop"/> <field label="My Rating" id="dfMyRating" name="My Rating"/> <field label="Seen It" id="dfSeenIt" name="Seen It"/> <field label="Viewing Date" id="dfSeenWhen" name="Viewing Date"/> <field label="Viewing Year" id="dfSeenYear" name="Viewing Year"/> <field label="Seen Where" id="dfSeenWhere" name="Seen Where"/> <field label="Purchase Date" id="dfPurchaseDate" name="Purchase Date"/> <field label="Purchase Year" id="dfPurchaseYear" name="Purchase Year"/> <field label="Purchase Price" id="dfPurchasePrice" name="Purchase Price"/> <field label="Location" id="dfLocation" name="Location"/> <field label="Starting Position" id="dfStartPos" name="Starting Position"/> <field label="Tape Speed" id="dfTapeSpeed" name="Tape Speed"/> <field label="Notes" id="dfNotes" name="Notes"/> <field label="Links" id="dfLinks" name="Links"/> <field label="Movie Files" id="dfMovieLinks" name="Movie Files"/> <field label="Image Files" id="dfImageLinks" name="Image Files"/> <field label="Other Files" id="dfOtherLinks" name="Other Files"/> <field label="Trailer URLs" id="dfLinkTrailers" name="Trailer URLs"/> <field label="Trailer Files" id="dfTrailerFiles" name="Trailer Files"/> <field label="Quantity" id="dfQuantity" name="Quantity"/> <field label="Current Value" id="dfCurrentValue" name="Current Value"/> <field label="Storage Device" id="dfStorageDevice" name="Storage Device"/> <field label="Slot" id="dfStorageSlot" name="Slot"/> <field label="Episodes" id="dfEpisodes" name="Episodes"/> <field label="Chapters" id="dfChapters" name="Chapters"/> <field label="Extra Features" id="dfExtraFeatures" name="Extra Features"/> <field label="Actor" id="dfActor" name="Actor"/> <field label="Genre" id="dfGenre" name="Genre"/> <field label="Director" id="dfDirector" name="Director"/> <field label="Edition" id="dfEdition" name="Edition"/> <field label="Movie Release Year" id="dfReleaseYear" name="Movie Release Year"/> <field label="Format" id="dfFormat" name="Format"/> <field label="Region" id="dfRegion" name="Region"/> <field label="Release Year" id="dfDVDReleaseYear" name="Release Year"/> <field label="Series" id="dfSeries" name="Series"/> <field label="Box set" id="dfBoxSet" name="Box set"/> <field label="Audience Rating" id="dfMPAARating" name="Audience Rating"/> <field label="Studio" id="dfStudio" name="Studio"/> <field label="Distributor" id="dfDistributor" name="Distributor"/> <field label="Extras" id="dfExtras" name="Extras"/> <field label="Country" id="dfCountry" name="Country"/> <field label="Language" id="dfLanguage" name="Language"/> <field label="Plot Language" id="dfPlotLanguage" name="Plot Language"/> <field label="Original Title" id="dfOriginalTitle" name="Original Title"/> <field label="Screen Ratio" id="dfRatio" name="Screen Ratio"/> <field label="Packaging" id="dfPackage" name="Packaging"/> <field label="Subtitles" id="dfSubtitles" name="Subtitles"/> <field label="Audio Tracks" id="dfAudio" name="Audio Tracks"/> <field label="Store" id="dfStore" name="Store"/> <field label="Owner" id="dfOwner" name="Owner"/> <field label="Tape Label" id="dfTapeLabel" name="Tape Label"/> <field label="Condition" id="dfCondition" name="Condition"/> <field label="Tags" id="dfTag" name="Tags"/> <field label="Producer" id="dfProducer" name="Producer"/> <field label="Writer" id="dfWriter" name="Writer"/> <field label="Cinematography" id="dfCamera" name="Cinematography"/> <field label="Musician" id="dfMusic" name="Musician"/> <field label="User Credit 1" id="dfUserCredit1" name="User Credit 1"/> <field label="User Credit 2" id="dfUserCredit2" name="User Credit 2"/> <field label="Features" id="dfFeatures" name="Features"/> <field label="Title" id="dfEpisodeTitle" name="Title"/> <field label="Disc No." id="dfEpisodeDiscNr" name="Disc No."/> <field label="Plot" id="dfEpisodePlot" name="Plot"/> <field label="Running Time" id="dfEpisodeRunTime" name="Running Time"/> <field label="First Air Date" id="dfEpisodeFirstAirDate" name="First Air Date"/> <field label="Sequence No" id="dfEpisodeSequenceNr" name="Sequence No"/> <field label="Movie Link" id="dfEpisodeMovieLink" name="Movie Link"/> <field label="Internet Link" id="dfEpisodeLink" name="Internet Link"/> <field label="Image Link" id="dfEpisodeImageLink" name="Image Link"/> <field label="IMDB Number" id="dfEpisodeIMDBNumber" name="IMDB Number"/> <field label="Seen It" id="dfEpisodeSeenIt" name="Seen It"/> <field label="Viewing Date" id="dfEpisodeSeenWhen" name="Viewing Date"/> <field label="Seen Where" id="dfEpisodeSeenWhere" name="Seen Where"/> <field label="Disc No." id="strDiscNr" name="Disc No."/> <field label="Number Of Episodes" id="strNrEpisodes" name="Number Of Episodes"/> <field label="User Lookup 1" id="dfUserLookup1" name="User Lookup 1"/> <field label="User Lookup 2" id="dfUserLookup2" name="User Lookup 2"/> <field label="User Text 1" id="dfUserText1" name="User Text 1"/> <field label="User Text 2" id="dfUserText2" name="User Text 2"/> <field label="In Collection (0/1)" id="dfInCollectionBit" name="In Collection (0/1)"/> <field label="ID" id="dfID" name="ID"/> <field label="Last Modified" id="dfLastModified" name="Last Modified"/> <field label="Thumbnail" id="dfThumbFilePath" name="Thumbnail"/> <field label="Last Submission Date" id="dfSubmissionDate" name="Last Submission Date"/> <field label="Clz Movie ID" id="dfBPMovieID" name="Clz Movie ID"/> <field label="Clz Media ID" id="dfBPMediaID" name="Clz Media ID"/> <field label="BPOnline Movie Last Received Revision" id="dfBPMovieLastReceivedRevision" name="BPOnline Movie Last Received Revision"/> <field label="BPOnline Media Last Received Revision" id="dfBPMediaLastReceivedRevision" name="BPOnline Media Last Received Revision"/> <field label="Title First Letter" id="dfDynTitleLetter" name="Title First Letter"/> <field label="My Rating" id="dfDynRating" name="My Rating"/> </moviemetadata> -<movielist> -<movie> <id>701</id> <index>11</index> <coverfront>C:\Users\Administrator\Documents\Movie Collector\Images\Brave2012701_f.jpg</coverfront> <poster>C:\Users\Administrator\Documents\Movie Collector\Images\Brave2012701_p.jpg</poster> <backdropurl>C:\Users\Administrator\Documents\Movie Collector\Images\Brave2012701_d.jpg</backdropurl> <backgroundbackdrop>CLZBACKDROP</backgroundbackdrop> <imdburl>http://www.imdb.com/title/tt1217209</imdburl> <imdbnum>1217209</imdbnum> <imdbrating>7.3</imdbrating> <imdbvotes>66509</imdbvotes> <tmdbid>62177</tmdbid> <tmdburl>http://themoviedb.org/movie/62177</tmdburl> -<format> <displayname>Blu-ray Disc</displayname> <templateimage>C:\Users\Administrator\Documents\Movie Collector\Images\Listitemimages\bluray.jpg</templateimage> <scaledimage>C:\Users\Administrator\Documents\Movie Collector\Images\Listitemimages\bluray16x16.bmp</scaledimage> <sortname>Blu-ray Disc</sortname> </format> -<country> <displayname>USA</displayname> <templateimage>C:\Users\Administrator\Documents\Movie Collector\Images\Listitemimages\usa.jpg</templateimage> <scaledimage>C:\Users\Administrator\Documents\Movie Collector\Images\Listitemimages\usa16.jpg</scaledimage> <sortname>USA</sortname> </country> <collectionstatus listid="3">In Collection</collectionstatus> -<language> <displayname>English</displayname> <templateimage>C:\Users\Administrator\Documents\Movie Collector\Images\Listitemimages\uk.jpg</templateimage> <scaledimage>C:\Users\Administrator\Documents\Movie Collector\Images\Listitemimages\uk16.jpg</scaledimage> <sortname>English</sortname> </language> -<store> <displayname>Amazon</displayname> <sortname>Amazon</sortname> </store> <purchaseprice>$20.00</purchaseprice> <series/> <boxset/> -<purchasedate> -<year> <displayname>2012</displayname> </year> <month>12</month> <day>10</day> <date>12/10/2012</date> </purchasedate> -<owner> <displayname>John Doe</displayname> <sortname>John Doe</sortname> </owner> <title>Brave</title> <plot>Brave is set in the mystical Scottish Highlands, where Mérida is the princess of a kingdom ruled by King Fergus and Queen Elinor. An unruly daughter and an accomplished archer, Mérida one day defies a sacred custom of the land and inadvertently brings turmoil to the kingdom. In an attempt to set things right, Mérida seeks out an eccentric old Wise Woman and is granted an ill-fated wish. Also figuring into Mérida’s quest — and serving as comic relief — are the kingdom’s three lords: the enormous Lord MacGuffin, the surly Lord Macintosh, and the disagreeable Lord Dingwall.</plot> <myrating>9</myrating> -<myrating> <displayname>9</displayname> <sortname>9</sortname> </myrating> <seenit boolvalue="1">Yes</seenit> -<viewingdate> -<year> <displayname>2012</displayname> </year> <month>12</month> <day>10</day> <date>12/10/2012</date> </viewingdate> -<edition> <displayname>Collector's Edition</displayname> <sortname>Collector's Edition</sortname> </edition> -<condition> <displayname>Excellent</displayname> <sortname>090 Excellent</sortname> <lastname>090 Excellent</lastname> </condition> -<releasedate> -<year> <displayname>2012</displayname> </year> <date>2012</date> </releasedate> -<dvdreleasedate> -<year> <displayname>2012</displayname> </year> <month>11</month> <day>13</day> <date>11/13/2012</date> </dvdreleasedate> -<mpaarating> <displayname>PG (Parental Guidance)</displayname> <templateimage>C:\Users\Administrator\Documents\Movie Collector\Images\Listitemimages\pg.jpg</templateimage> <scaledimage>C:\Users\Administrator\Documents\Movie Collector\Images\Listitemimages\pg-16x16.jpg</scaledimage> <sortname>PG (Parental Guidance)</sortname> </mpaarating> <seenwhere>Home</seenwhere> <upc>786936828344</upc> <package/> -<location> <displayname>Moviebox 34</displayname> <sortname>Moviebox 34</sortname> </location> <tapelabel/> <runtime>93</runtime> <runtimeminutes>93 mins</runtimeminutes> <layersnum>1</layersnum> <layers listid="1">Single Side, Dual Layer</layers> <chapters>0</chapters> <nritems>5</nritems> <quantity>1</quantity> <color listid="0">Color</color> <tapespeed listid="0">N/A</tapespeed> -<genres> -<genre> <displayname>Action</displayname> <sortname>Action</sortname> </genre> -<genre> <displayname>Adventure</displayname> <sortname>Adventure</sortname> </genre> -<genre> <displayname>Animation</displayname> <sortname>Animation</sortname> </genre> -<genre> <displayname>Comedy</displayname> <sortname>Comedy</sortname> </genre> -<genre> <displayname>Family</displayname> <sortname>Family</sortname> </genre> </genres> -<cast> -<star> <role id="dfActor">Actor</role> <roleid>dfActor</roleid> -<person> <displayname>Kelly MacDonald</displayname> <sortname>MacDonald, Kelly</sortname> <lastname>MacDonald</lastname> <url>http://www.imdb.com/name/nm0531808/</url> <firstname>Kelly</firstname> <imageurl>http://clzimages.com/movie/banners/actors/small/09/09_24708_4_KellyMacDonald.jpg</imageurl> </person> <character>Merida</character> </star> -<star> <role id="dfActor">Actor</role> <roleid>dfActor</roleid> -<person> <displayname>Billy Connolly</displayname> <sortname>Connolly, Billy</sortname> <lastname>Connolly</lastname> <url>http://www.imdb.com/name/nm0175262/</url> <firstname>Billy</firstname> <imageurl>http://clzimages.com/movie/banners/actors/small/b4/b4_3429_4_BillyConnolly.jpg</imageurl> </person> <character>Fergus</character> </star> -<star> <role id="dfActor">Actor</role> <roleid>dfActor</roleid> -<person> <displayname>Emma Thompson</displayname> <sortname>Thompson, Emma</sortname> <lastname>Thompson</lastname> <url>http://www.imdb.com/name/nm0000668/</url> <firstname>Emma</firstname> <imageurl>http://clzimages.com/movie/banners/actors/small/13/13_8549_4_EmmaThompson.jpg</imageurl> </person> <character>Elinor</character> </star> -<star> <role id="dfActor">Actor</role> <roleid>dfActor</roleid> -<person> <displayname>Julie Walters</displayname> <sortname>Walters, Julie</sortname> <lastname>Walters</lastname> <url>http://www.imdb.com/name/nm0910278/</url> <firstname>Julie</firstname> <imageurl>http://clzimages.com/movie/banners/actors/small/20/20_14643_4_JulieWalters.jpg</imageurl> </person> <character>The Witch</character> </star> -<star> <role id="dfActor">Actor</role> <roleid>dfActor</roleid> -<person> <displayname>Robbie Coltrane</displayname> <sortname>Coltrane, Robbie</sortname> <lastname>Coltrane</lastname> <url>http://www.imdb.com/name/nm0001059/</url> <firstname>Robbie</firstname> <imageurl>http://clzimages.com/movie/banners/actors/small/d0/d0_92_4_RobbieColtrane.jpg</imageurl> </person> <character>Lord Dingwall</character> </star> -<star> <role id="dfActor">Actor</role> <roleid>dfActor</roleid> -<person> <displayname>Kevin McKidd</displayname> <sortname>McKidd, Kevin</sortname> <lastname>McKidd</lastname> <url>http://www.imdb.com/name/nm0571727/</url> <firstname>Kevin</firstname> <imageurl>http://clzimages.com/movie/banners/actors/small/b8/b8_3557_4_KevinMcKidd.jpg</imageurl> </person> <character>Lord MacGuffin/Young MacGuffin</character> </star> -<star> <role id="dfActor">Actor</role> <roleid>dfActor</roleid> -<person> <displayname>Craig Ferguson</displayname> <sortname>Ferguson, Craig</sortname> <lastname>Ferguson</lastname> <url>http://www.imdb.com/name/nm0272401/</url> <firstname>Craig</firstname> <imageurl>http://clzimages.com/movie/banners/actors/small/17/17_17423_4_CraigFerguson.jpg</imageurl> </person> <character>Lord Macintosh</character> </star> -<star> <role id="dfActor">Actor</role> <roleid>dfActor</roleid> -<person> <displayname>Sally Kinghorn</displayname> <sortname>Kinghorn, Sally</sortname> <lastname>Kinghorn</lastname> <firstname>Sally</firstname> </person> <character>Maudie</character> </star> -<star> <role id="dfActor">Actor</role> <roleid>dfActor</roleid> -<person> <displayname>Eilidh Fraser</displayname> <sortname>Fraser, Eilidh</sortname> <lastname>Fraser</lastname> <firstname>Eilidh</firstname> </person> <character>Maudie</character> </star> -<star> <role id="dfActor">Actor</role> <roleid>dfActor</roleid> -<person> <displayname>Peigi Barker</displayname> <sortname>Barker, Peigi</sortname> <lastname>Barker</lastname> <firstname>Peigi</firstname> </person> <character>Young Merida</character> </star> -<star> <role id="dfActor">Actor</role> <roleid>dfActor</roleid> -<person> <displayname>Steven Cree</displayname> <sortname>Cree, Steven</sortname> <lastname>Cree</lastname> <firstname>Steven</firstname> </person> <character>Young Macintosh</character> </star> -<star> <role id="dfActor">Actor</role> <roleid>dfActor</roleid> -<person> <displayname>Steve Purcell</displayname> <sortname>Purcell, Steve</sortname> <lastname>Purcell</lastname> <firstname>Steve</firstname> </person> <character>The Crow</character> </star> -<star> <role id="dfActor">Actor</role> <roleid>dfActor</roleid> -<person> <displayname>Callum O'Neill</displayname> <sortname>O'Neill, Callum</sortname> <lastname>O'Neill</lastname> <firstname>Callum</firstname> </person> <character>Wee Dingwall</character> </star> -<star> <role id="dfActor">Actor</role> <roleid>dfActor</roleid> -<person> <displayname>Patrick Doyle</displayname> <sortname>Doyle, Patrick</sortname> <lastname>Doyle</lastname> <firstname>Patrick</firstname> </person> <character>Martin</character> </star> -<star> <role id="dfActor">Actor</role> <roleid>dfActor</roleid> -<person> <displayname>John Ratzenberger</displayname> <sortname>Ratzenberger, John</sortname> <lastname>Ratzenberger</lastname> <url>http://www.imdb.com/name/nm0001652/</url> <firstname>John</firstname> <imageurl>http://clzimages.com/movie/banners/actors/small/d2/d2_14840_4_JohnRatzenberger.jpg</imageurl> </person> <character>Gordon</character> </star> </cast> -<crew> -<crewmember> <role id="dfDirector">Director</role> <roleid>dfDirector</roleid> -<person> <displayname>Steve Purcell</displayname> <sortname>Purcell, Steve</sortname> <lastname>Purcell</lastname> <url>http://www.imdb.com/name/nm0700760/</url> <firstname>Steve</firstname> <imageurl>http://clzimages.com/movie/banners/employees/small/0e/0e_3199_4_StevePurcell.jpg</imageurl> </person> </crewmember> -<crewmember> <role id="dfDirector">Director</role> <roleid>dfDirector</roleid> -<person> <displayname>Brenda Chapman</displayname> <sortname>Chapman, Brenda</sortname> <lastname>Chapman</lastname> <url>http://www.imdb.com/name/nm0152312/</url> <firstname>Brenda</firstname> <imageurl>http://clzimages.com/movie/banners/employees/small/32/32_6810_4_BrendaChapman.jpg</imageurl> </person> </crewmember> -<crewmember> <role id="dfWriter">Writer</role> <roleid>dfWriter</roleid> -<person> <displayname>Steve Purcell</displayname> <sortname>Purcell, Steve</sortname> <lastname>Purcell</lastname> <firstname>Steve</firstname> </person> </crewmember> -<crewmember> <role id="dfWriter">Writer</role> <roleid>dfWriter</roleid> -<person> <displayname>Brenda Chapman</displayname> <sortname>Chapman, Brenda</sortname> <lastname>Chapman</lastname> <firstname>Brenda</firstname> </person> </crewmember> -<crewmember> <role id="dfProducer">Producer</role> <roleid>dfProducer</roleid> -<person> <displayname>Andrew Stanton</displayname> <sortname>Stanton, Andrew</sortname> <lastname>Stanton</lastname> <firstname>Andrew</firstname> </person> </crewmember> -<crewmember> <role id="dfProducer">Producer</role> <roleid>dfProducer</roleid> -<person> <displayname>John Lasseter</displayname> <sortname>Lasseter, John</sortname> <lastname>Lasseter</lastname> <firstname>John</firstname> </person> </crewmember> -<crewmember> <role id="dfMusic">Musician</role> <roleid>dfMusic</roleid> -<person> <displayname>Patrick Doyle</displayname> <sortname>Doyle, Patrick</sortname> <lastname>Doyle</lastname> <firstname>Patrick</firstname> </person> </crewmember> </crew> -<regions> -<region> <displayname>Region 1</displayname> <templateimage>C:\Users\Administrator\Documents\Movie Collector\Images\Listitemimages\r-1.jpg</templateimage> <scaledimage>C:\Users\Administrator\Documents\Movie Collector\Images\Listitemimages\r-1-16x16.jpg</scaledimage> <sortname>Region 1</sortname> </region> -<region> <displayname>Region A</displayname> <templateimage>C:\Users\Administrator\Documents\Movie Collector\Images\Listitemimages\r-A.jpg</templateimage> <scaledimage>C:\Users\Administrator\Documents\Movie Collector\Images\Listitemimages\r-A-16x16.jpg</scaledimage> <sortname>Region A</sortname> </region> </regions> -<ratios> -<ratio> <displayname>Theatrical Widescreen (2.35:1)</displayname> <sortname>Theatrical Widescreen (2.35:1)</sortname> </ratio> </ratios> -<subtitles> -<subtitle> <displayname>English (Closed Captioned)</displayname> <sortname>English (Closed Captioned)</sortname> </subtitle> -<subtitle> <displayname>French</displayname> <sortname>French</sortname> </subtitle> -<subtitle> <displayname>Spanish</displayname> <sortname>Spanish</sortname> </subtitle> </subtitles> <features/> -<audios> -<audio> <displayname>Dolby Digital 5.1 [Spanish]</displayname> <templateimage>C:\Users\Administrator\Documents\Movie Collector\Images\Listitemimages\dolbydigital-51.png</templateimage> <sortname>Dolby Digital 5.1 [Spanish]</sortname> </audio> -<audio> <displayname>DTS [English]</displayname> <templateimage>C:\Users\Administrator\Documents\Movie Collector\Images\Listitemimages\dts.png</templateimage> <sortname>DTS [English]</sortname> </audio> -<audio> <displayname>DTS [French]</displayname> <templateimage>C:\Users\Administrator\Documents\Movie Collector\Images\Listitemimages\dts.png</templateimage> <sortname>DTS [French]</sortname> </audio> </audios> -<studios> -<studio> <displayname>Pixar</displayname> <sortname>Pixar</sortname> </studio> </studios> -<distributor> <displayname>Buena Vista</displayname> <sortname>Buena Vista</sortname> </distributor> <extras/> <tags/> <userlookup1/> <userlookup2/> -<links> -<link> <description>Amazon.com</description> <url>http://www.amazon.com/gp/search?keywords=786936828344+Brave&tag=collectorzapp-20&index=dvd</url> <urltype>URL</urltype> </link> -<link> <description>Movie Collector Connect</description> <url>http://connect.collectorz.com/movies/database/brave-2012</url> <urltype>URL</urltype> </link> -<link> <description>IMDB</description> <url>http://www.imdb.com/title/tt1217209</url> <urltype>URL</urltype> </link> -<link> <description>TheMovieDb.org</description> <url>http://www.themoviedb.org/movie/62177</url> <urltype>URL</urltype> </link> -<link> <description>Trailer</description> <url>http://www.youtube.com/watch?v=tYg0VgPy6Uk</url> <urltype>Trailer URL</urltype> </link> </links> <episodecount>0</episodecount> -<lastmodified> <date>12/10/2012 4:37:03 PM</date> </lastmodified> <thumbfilepath>C:\Users\Administrator\Documents\Movie Collector\Thumbnails\CBF03186E647BB05BC635F286DC84E34.jpg</thumbfilepath> <bpmovieid>140538</bpmovieid> <bpmediaid>496821</bpmediaid> <bpmovielastreceivedrevision>58</bpmovielastreceivedrevision> <bpmedialastreceivedrevision>0</bpmedialastreceivedrevision> <plotlanguage/> <storagedevice/> -<titlefirstletter> <displayname>B</displayname> <sortname>B</sortname> </titlefirstletter> -<discs> -<disc> <title>Disc 01</title> <features/> <storagedevice/> <episodes/> </disc> -<disc> <title>Disc 02</title> <features/> <storagedevice/> <episodes/> </disc> -<disc> <title>Disc 03</title> <features/> <storagedevice/> <episodes/> </disc> -<disc> <title>Disc 04</title> <features/> <storagedevice/> <episodes/> </disc> -<disc> <title>Disc 05</title> <features/> <storagedevice/> <episodes/> </disc> </discs> <submissiondate/> </movie> </movielist> </movieinfo>
http://www.amazon.com/gp/search?keywords=786936828344+Bravetag=collectorzapp-20&index=dvd
This URL Form xml file giving error.
Remember one thing XML not Accept "&"
Two things:
First, your XML contains a lot of - characters (maybe you copied these from a Xml-editor or viewer unintentional).
Second, your XML contains a some unescaped &s in URLs; these have to be escaped (use & instead of &). Take a look at the XML specification:
The ampersand character (&) and the left angle bracket (<) may appear in their literal form only when used as markup delimiters, or within a comment, a processing instruction, or a CDATA section. If they are needed elsewhere, they must be escaped using either numeric character references or the strings "&" and "<" respectively.
StringReader reads a literal string.
Use StreamReader instead.
Or use it like :
http://forums.asp.net/t/1247855.aspx/1 giving path

How to Read XElement contents containing Sharepoint List Structure?

I want to bind the MultipleCheckbox items from Choice Column of sharepoint List to asp.net CheckBoxListItem using c#.
I am retriving information of List using XELEMENT as:
In .cs file:
XElement listStructure;
listStructure = proxy.GetList("WebsiteSubscriber");
here am getting XML as:
<List DocTemplateUrl="" DefaultViewUrl="/Lists/WebsiteSubscriber/AllItems.aspx" MobileDefaultViewUrl="" ID="{2C8A80EA-38C5-48F7-9D7D-400D445A5E64}" Title="WebsiteSubscriber" Description="" ImageUrl="/_layouts/images/itgen.png" Name="{2C8A80EA-38C5-48F7-9D7D-400D445A5E64}" BaseType="0" FeatureId="00bfea71-de22-43b2-a848-c05709900100" ServerTemplate="100" Created="20130417 02:18:11" Modified="20130424 09:27:11" LastDeleted="20130419 04:46:25" Version="5" Direction="none" ThumbnailSize="" WebImageWidth="" WebImageHeight="" Flags="545263616" ItemCount="13" AnonymousPermMask="0" RootFolder="/Lists/WebsiteSubscriber" ReadSecurity="1" WriteSecurity="1" Author="8" EventSinkAssembly="" EventSinkClass="" EventSinkData="" EmailAlias="" WebFullUrl="/" WebId="198e057a-38e8-410a-8358-ed95f77d18ea" SendToLocation="" ScopeId="e2cbf2fd-93e4-408d-bd4e-320321734b8c" MajorVersionLimit="0" MajorWithMinorVersionsLimit="0" WorkFlowId="" HasUniqueScopes="False" NoThrottleListOperations="False" HasRelatedLists="" AllowDeletion="True" AllowMultiResponses="False" EnableAttachments="True" EnableModeration="False" EnableVersioning="False" HasExternalDataSource="False" Hidden="False" MultipleDataList="False" Ordered="False" ShowUser="True" EnablePeopleSelector="False" EnableResourceSelector="False" EnableMinorVersion="False" RequireCheckout="False" ThrottleListOperations="False" ExcludeFromOfflineClient="False" EnableFolderCreation="False" IrmEnabled="False" IsApplicationList="False" PreserveEmptyValues="False" StrictTypeCoercion="False" EnforceDataValidation="False" MaxItemsPerThrottledOperation="100000" xmlns="http://schemas.microsoft.com/sharepoint/soap/">
<Fields>
<Field ID="{03e45e84-1992-4d42-9116-26f756012634}" RowOrdinal="0" Type="ContentTypeId" Sealed="TRUE" ReadOnly="TRUE" Hidden="TRUE" DisplayName="Content Type ID" Name="ContentTypeId" DisplaceOnUpgrade="TRUE" SourceID="http://schemas.microsoft.com/sharepoint/v3" StaticName="ContentTypeId" ColName="tp_ContentTypeId" FromBaseType="TRUE" />
<Field ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" Name="Title" SourceID="http://schemas.microsoft.com/sharepoint/v3" StaticName="Title" Group="Base Columns" Type="Text" DisplayName="Title" Required="FALSE" FromBaseType="TRUE" EnforceUniqueValues="FALSE" Indexed="FALSE" MaxLength="255" Version="1" ColName="nvarchar1" RowOrdinal="0" />
<Field ID="{34ad21eb-75bd-4544-8c73-0e08330291fe}" ReadOnly="TRUE" Type="Note" Name="_ModerationComments" DisplayName="Approver Comments" Hidden="TRUE" CanToggleHidden="TRUE" Filterable="FALSE" Sortable="FALSE" SourceID="http://schemas.microsoft.com/sharepoint/v3" StaticName="_ModerationComments" FromBaseType="TRUE" ColName="ntext1" />
<Field ID="{bc91a437-52e7-49e1-8c4e-4698904b2b6d}" ReadOnly="TRUE" Type="Computed" Name="LinkTitleNoMenu" DisplayName="Title" Dir="" DisplayNameSrcField="Title" AuthoringInfo="(linked to item)" EnableLookup="TRUE" ListItemMenuAllowed="Prohibited" LinkToItemAllowed="Prohibited" SourceID="http://schemas.microsoft.com/sharepoint/v3" StaticName="LinkTitleNoMenu" FromBaseType="TRUE">
<FieldRefs>
<FieldRef Name="Title" />
<FieldRef Name="LinkFilenameNoMenu" />
</FieldRefs>
<DisplayPattern>
<IfEqual>
<Expr1>
<LookupColumn Name="FSObjType" />
</Expr1>
<Expr2>1</Expr2>
<Then>
<Field Name="LinkFilenameNoMenu" />
</Then>
<Else>
<HTML><![CDATA[<a onfocus="OnLink(this)" href="]]></HTML>
<URL />
<HTML><![CDATA[" onclick="EditLink2(this,]]></HTML>
<Counter Type="View" />
<HTML><![CDATA[);return false;" target="_self">]]></HTML>
<Column HTMLEncode="TRUE" Name="Title" Default="(no title)" />
<IfEqual>
<Expr1>
<GetVar Name="ShowAccessibleIcon" />
</Expr1>
<Expr2>1</Expr2>
<Then>
<HTML><![CDATA[<img src="/_layouts/images/blank.gif" class="ms-hidden" border="0" width="1" height="1" alt="Use SHIFT+ENTER to open the menu (new window)."/>]]></HTML>
</Then>
</IfEqual>
<HTML><![CDATA[</a>]]></HTML>
<IfNew>
<HTML><![CDATA[<img src="/_layouts/1033/images/new.gif" alt="]]></HTML>
<HTML>New</HTML>
<HTML><![CDATA[" class="ms-newgif" />]]></HTML>
</IfNew>
</Else>
</IfEqual>
</DisplayPattern>
</Field>
<Field ID="{82642ec8-ef9b-478f-acf9-31f7d45fbc31}" ReadOnly="TRUE" Type="Computed" Name="LinkTitle" DisplayName="Title" DisplayNameSrcField="Title" ClassInfo="Menu" AuthoringInfo="(linked to item with edit menu)" ListItemMenuAllowed="Required" LinkToItemAllowed="Prohibited" SourceID="http://schemas.microsoft.com/sharepoint/v3" StaticName="LinkTitle" FromBaseType="TRUE">
<FieldRefs>
<FieldRef Name="Title" />
<FieldRef Name="LinkTitleNoMenu" />
<FieldRef Name="_EditMenuTableStart2" />
<FieldRef Name="_EditMenuTableEnd" />
</FieldRefs>
<DisplayPattern>
<FieldSwitch>
<Expr>
<GetVar Name="FreeForm" />
</Expr>
<Case Value="TRUE">
<Field Name="LinkTitleNoMenu" />
</Case>
<Default>
<Switch>
<Expr>
<GetVar Name="MasterVersion" />
</Expr>
<Case Value="4">
<HTML><![CDATA[<div class="ms-vb itx" onmouseover="OnItem(this)" CTXName="ctx]]></HTML>
<Field Name="_EditMenuTableStart2" />
<HTML><![CDATA[">]]></HTML>
<Field Name="LinkTitleNoMenu" />
<HTML><![CDATA[</div>]]></HTML>
<HTML><![CDATA[<div class="s4-ctx" onmouseover="OnChildItem(this.parentNode); return false;">]]></HTML>
<HTML><![CDATA[<span> </span>]]></HTML>
<HTML><![CDATA[<a onfocus="OnChildItem(this.parentNode.parentNode); return false;" onclick="PopMenuFromChevron(event); return false;" href="javascript:;" title="Open Menu"></a>]]></HTML>
<HTML><![CDATA[<span> </span>]]></HTML>
<HTML><![CDATA[</div>]]></HTML>
</Case>
<Default>
<HTML><![CDATA[<table height="100%" cellspacing="0" class="ms-unselectedtitle itx" onmouseover="OnItem(this)" CTXName="ctx]]></HTML>
<Field Name="_EditMenuTableStart2" />
<HTML><![CDATA["><tr><td width="100%" class="ms-vb">]]></HTML>
<SetVar Name="ShowAccessibleIcon" Value="1" />
<Field Name="LinkTitleNoMenu" />
<SetVar Name="ShowAccessibleIcon" Value="0" />
<HTML><![CDATA[</td><td><img src="/_layouts/images/blank.gif" width="13" style="visibility:hidden" alt=""/></td></tr></table>]]></HTML>
</Default>
</Switch>
</Default>
</FieldSwitch>
</DisplayPattern>
</Field>
<Field ID="{5f190d91-3dbc-4489-9878-3c092caf35b6}" Hidden="TRUE" ReadOnly="TRUE" Type="Computed" Name="LinkTitle2" DisplayName="Title" DisplayNameSrcField="Title" ClassInfo="Menu" AuthoringInfo="(linked to item with edit menu) (old)" SourceID="http://schemas.microsoft.com/sharepoint/v3" StaticName="LinkTitle2" FromBaseType="TRUE">
<FieldRefs>
<FieldRef Name="Title" />
<FieldRef Name="LinkTitleNoMenu" />
<FieldRef Name="_EditMenuTableStart" />
<FieldRef Name="_EditMenuTableEnd" />
</FieldRefs>
<DisplayPattern>
<FieldSwitch>
<Expr>
<GetVar Name="FreeForm" />
</Expr>
<Case Value="TRUE">
<Field Name="LinkTitleNoMenu" />
</Case>
<Default>
<Field Name="_EditMenuTableStart" />
<SetVar Name="ShowAccessibleIcon" Value="1" />
<Field Name="LinkTitleNoMenu" />
<SetVar Name="ShowAccessibleIcon" Value="0" />
<Field Name="_EditMenuTableEnd" />
</Default>
</FieldSwitch>
</DisplayPattern>
</Field>
<Field ID="{39360f11-34cf-4356-9945-25c44e68dade}" ReadOnly="TRUE" Hidden="TRUE" Type="Text" Name="File_x0020_Type" DisplaceOnUpgrade="TRUE" DisplayName="File Type" SourceID="http://schemas.microsoft.com/sharepoint/v3" StaticName="File_x0020_Type" FromBaseType="TRUE" ColName="nvarchar2" />
<Field Type="Text" DisplayName="Email" Required="FALSE" EnforceUniqueValues="FALSE" Indexed="FALSE" MaxLength="255" ID="{bf605e59-6807-47de-87ac-617b2c8df00b}" SourceID="{2c8a80ea-38c5-48f7-9d7d-400d445a5e64}" StaticName="Email" Name="Email" ColName="nvarchar3" RowOrdinal="0" />
<Field Type="MultiChoice" DisplayName="Area" Required="FALSE" EnforceUniqueValues="FALSE" Indexed="FALSE" FillInChoice="FALSE" ID="{16cc1615-a490-44de-a870-c7ebe603e2cc}" SourceID="{2c8a80ea-38c5-48f7-9d7d-400d445a5e64}" StaticName="Area" Name="Area" ColName="ntext2" RowOrdinal="0">
<Default>Articles</Default>
**<CHOICES>
<CHOICE>Articles</CHOICE>
<CHOICE>Websites</CHOICE>
<CHOICE>Books</CHOICE>
</CHOICES>**
</Field>
<Field ID="{1d22ea11-1e32-424e-89ab-9fedbadb6ce1}" ColName="tp_ID" RowOrdinal="0" ReadOnly="TRUE" Type="Counter" Name="ID" PrimaryKey="TRUE" DisplayName="ID" SourceID="http://schemas.microsoft.com/sharepoint/v3" StaticName="ID" FromBaseType="TRUE" />
<Field ID="{c042a256-787d-4a6f-8a8a-cf6ab767f12d}" Type="Computed" DisplayName="Content Type" Name="ContentType" DisplaceOnUpgrade="TRUE" RenderXMLUsingPattern="TRUE" Sortable="FALSE" SourceID="http://schemas.microsoft.com/sharepoint/v3" StaticName="ContentType" Group="_Hidden" PITarget="MicrosoftWindowsSharePointServices" PIAttribute="ContentTypeID" FromBaseType="TRUE">
I want to get above values following from XML.
<CHOICES>
<CHOICE>Articles</CHOICE>
<CHOICE>Websites</CHOICE>
<CHOICE>Books</CHOICE>
</CHOICES>
Provided you fix your XML, this does what you want:
var choices = (from n in xml.Descendants()
where n.Name.LocalName == "CHOICES"
select new
{
CHOICES = n.Elements().Select(x => x.Value).ToList()
}).ToList();
Will give you a list of the anonymous type CHOICES elements that contain your CHOICE element values. Example output:
Edit
See comments:
var choices = (from n in xml.Descendants()
where n.Name.LocalName == "CHOICE"
select n.Value).ToList();
This will return a list of the following string values:
Articles
Websites
Books
0;#Approved
1;#Rejected
2;#Pending
3;#Draft
4;#Scheduled

XML extracting attributes using XMLDocument

i am trying to parse an xml element using XMLDocument (DItem >> Title)
below is my code but somehow i am not getting hold of it.... any help?
XmlDocument xmldoc = new XmlDocument();
XmlNamespaceManager xmlns = new XmlNamespaceManager(xdoc.NameTable);
xmlns.AddNamespace("DItems", "http://namespace.xsd");
xmldoc.Load(url);
var title = xmldoc.SelectNodes("content", xmlns);
foreach (XmlNode node in title)
{
string title = node.Attributes["Title"].Value;
//this.ddlTitle.Items.Add(new ListItem(title));
}
here is my XML:
<?xml version='1.0'?>
<root xmlns="http://www.w3.org/2005/Atom">
<title type="text">title</title>
<entry>
<content type="application/xml">
<Items xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.namespace.xsd">
<CatalogSource Acronym="ABC" OrganizationName="organization name" />
<Item Id="28466" CatalogUrl="url">
<DItem xmlns:content="http://namespace.xsd" TargetUrl="http://index.html" Title="my title1">
<content:Source Acronym="ABC" OrganizationName="ABC" />
</DItem>
</Item>
</Items>
</content>
</entry>
<entry>
<content type="application/xml">
<Items xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.namespace.xsd">
<CatalogSource Acronym="ABC" OrganizationName="organization name" />
<Item Id="28466" CatalogUrl="url">
<DItem xmlns:content="http://namespace.xsd" TargetUrl="http://index.html" Title="my title2">
<content:Source Acronym="ABC" OrganizationName="ABC" />
</DItem>
</Item>
</Items>
</content>
</entry>
<entry>
<content type="application/xml">
<Items xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.namespace.xsd">
<CatalogSource Acronym="ABC" OrganizationName="organization name" />
<Item Id="28466" CatalogUrl="url">
<DItem xmlns:content="http://namespace.xsd" TargetUrl="http://index.html" Title="my title3">
<content:Source Acronym="ABC" OrganizationName="ABC" />
</DItem>
</Item>
</Items>
</content>
</entry>
</root>
var xmldoc = new XmlDocument();
var xmlns = new XmlNamespaceManager(xmldoc.NameTable);
xmlns.AddNamespace("DItems", "http://www.namespace.xsd");
xmldoc.Load(url);
var titleNodes = xmldoc.SelectNodes("//DItems:DItem/#Title", xmlns);
var result = titleNodes.Cast<XmlAttribute>().Select(a => a.Value).ToList();
Output (list of objects):
my title1
my title2
my title3

How to convert many-to-one XML data to DataSet?

I have an XML document that has a collection of objects. Each object has a key/value pair of label and value. I am trying to convert this into a DataSet, but when I do ds.ReadXml(xmlFile), then it creates two columns: label and value.
What I would like is to have a column for each "label" and the value to be part of the row. here is my sample of the XML:
<responses>
<response>
<properties id="1" Form="Account Request" Date="Tuesday, March 16, 2010 5:04:26 PM" Confirmation="True" />
<fields>
<field>
<label>Name</label>
<value>John</value>
</field>
<field>
<label>Email</label>
<value>John#Doe.com</value>
</field>
<field>
<label>Website</label>
<value>http://domain1.com</value>
</field>
<field>
<label>Phone</label>
<value>999-999-9999</value>
</field>
<field>
<label>Place of Birth</label>
<value>Earth</value>
</field>
<field>
<label>Misc</label>
<value>Misc</value>
</field>
<field>
<label>Comments</label>
<value />
</field>
<field>
<label>Agree to Terms?</label>
<value>True</value>
</field>
</fields>
</response>
<response>
<properties id="2" Form="Account Request" Date="Tuesday, March 17, 2010 5:04:26 PM" Confirmation="True" />
<fields>
<field>
<label>Name</label>
<value>John2</value>
</field>
<field>
<label>Email</label>
<value>John2#Doe.com</value>
</field>
<field>
<label>Website</label>
<value>http://domain2.com</value>
</field>
<field>
<label>Phone</label>
<value>999-999-9999</value>
</field>
<field>
<label>Place of Birth</label>
<value>Earth</value>
</field>
<field>
<label>Misc</label>
<value>Misc</value>
</field>
<field>
<label>Comments</label>
<value />
</field>
<field>
<label>Agree to Terms?</label>
<value>True</value>
</field>
</fields>
</response>
<response>
<properties id="3" Form="Account Request" Date="Tuesday, March 18, 2010 5:04:26 PM" Confirmation="True" />
<fields>
<field>
<label>Name</label>
<value>John3</value>
</field>
<field>
<label>Email</label>
<value>John3#Doe.com</value>
</field>
<field>
<label>Website</label>
<value>http://domain3.com</value>
</field>
<field>
<label>Phone</label>
<value>999-999-9999</value>
</field>
<field>
<label>Place of Birth</label>
<value>Earth</value>
</field>
<field>
<label>Misc</label>
<value>Misc</value>
</field>
<field>
<label>Comments</label>
<value />
</field>
<field>
<label>Agree to Terms?</label>
<value>True</value>
</field>
</fields>
</response>
<response>
<properties id="4" Form="Account Request" Date="Tuesday, March 19, 2010 5:04:26 PM" Confirmation="True" />
<fields>
<field>
<label>Name</label>
<value>John</value>
</field>
<field>
<label>Email</label>
<value>John4#Doe.com</value>
</field>
<field>
<label>Website</label>
<value>http://domain4.com</value>
</field>
<field>
<label>Phone</label>
<value>999-999-9999</value>
</field>
<field>
<label>Place of Birth</label>
<value>Earth</value>
</field>
<field>
<label>Misc</label>
<value>Misc</value>
</field>
<field>
<label>Comments</label>
<value />
</field>
<field>
<label>Agree to Terms?</label>
<value>True</value>
</field>
</fields>
</response>
</responses>
How would I convert this to a DataSet so that I can load it into a gridview with the columns: Name, Email, Website, Phone, Place of Birth, Misc, Comments, and Agree to Terms?
Then row 1 would be:
John, John#Doe.com, http://domain1.com, 999-999-9999, Earth, Misc, , True
How can I do this with the XML provided?
You're going to have to transform your data in order to use it the way you want. As you've seen, you have a bad structure.
I suggest that you create an empty dataset in Visual Studio (from Add->New Item), then set it to look the way you'd like it to look. Write some code to add a little test data, then write it to a file using DataSet.WriteXml. That will show you what your proposed structure would look like.
I then recommend that you use LINQ to XML to transform your input XML into the new format.
Here's an example of using LINQ to XML to transform your data:
public static void TransformIt(TextWriter output)
{
var inputDocument = XDocument.Parse(INPUT_XML);
if (inputDocument.Root == null)
{
return;
}
var doc = new XDocument(
new XElement(
"responses",
from response in inputDocument.Root.Elements()
select new XElement(
"response",
from lv in GetResponseLabels(response)
select MakeResponse(lv.Label, lv.Value))));
var settings = new XmlWriterSettings
{
Encoding = Encoding.UTF8,
Indent = true,
};
using (var writer = XmlWriter.Create(output, settings))
{
if (writer == null)
{
return;
}
doc.WriteTo(writer);
}
}
private static XElement MakeResponse(string label, string value)
{
var trimmedLabel = label.Replace(" ", String.Empty).Replace("?", String.Empty);
return new XElement(trimmedLabel, value);
}
private static IEnumerable<LabelAndValue> GetResponseLabels(XContainer response)
{
var fieldsElement = response.Element("fields");
if (fieldsElement == null)
{
return null;
}
return from field in fieldsElement.Elements("field")
let valueElement = field.Element("value")
let labelElement = field.Element("label")
select new LabelAndValue
{
Label = labelElement == null ? "Unknown" : labelElement.Value,
Value = valueElement == null ? null : valueElement.Value
};
}
private struct LabelAndValue
{
public string Label { get; set; }
public string Value { get; set; }
}
I would iterate through the XML and depending on how you iterate (Linq is most flexible), create a new object(datatable, for instance) with your data described in the way you need.
I ended up changing the approach a bit and did this (pivots):
DataRow dr = dt.NewRow();
//TRANSFORM RESPONSE LABELS INTO COLUMNS
foreach (XmlNode fieldNode in currentXml.SelectNodes("response/fields/field"))
{
string label = fieldNode.SelectSingleNode("label").InnerText ?? "Unknown";
string value = fieldNode.SelectSingleNode("value").InnerText;
//CHECK IF ARBITRARY LABEL WAS ADDED BEFORE
if (!dt.Columns.Contains(label))
{
//CREATE COLUMN FOR NEW LABEL
dt.Columns.Add(label);
}
dr[label] = value;
}
dt.Rows.Add(dr);
}
ds.Tables.Add(dt);

Categories