Reputation: 499
Hi I have below xml file that I am trying to load in xml document using below code -
XmlDocument Doc = new XmlDocument();
Doc.LoadXml(@"C:\MappingFiles\InputFile.xml");
but its throwing error - Data at the root level is invalid. Line 1, position 1.
Xml file is fully structured still its throwing error.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<CAS xmlns="http://www.test.com/schema/CASXmlSchema">
<OperationList>
<Operation id="1">
<Type>calculate</Type>
<calculateParams>
<RequestInfo>
<CalcRequestTradeParam>
<TempTradeList>
<Trades>
<TemplateDefinitionID>TRADE.EQ.EQEUROPEAN</TemplateDefinitionID>
<TradeParameters>
<StringToParameterValueEntry>
<StringToParameterValueKey>Trade ID</StringToParameterValueKey>
<StringToParameterValueValue>
<ParameterType>String</ParameterType>
<NonTabularValue>EU1</NonTabularValue>
<TableValue/>
</StringToParameterValueValue>
</StringToParameterValueEntry>
<StringToParameterValueEntry>
<StringToParameterValueKey>Template</StringToParameterValueKey>
<StringToParameterValueValue>
<ParameterType>String</ParameterType>
<NonTabularValue>TRADE.EQ.EQEUROPEAN</NonTabularValue>
<TableValue/>
</StringToParameterValueValue>
</StringToParameterValueEntry>
<StringToParameterValueEntry>
<StringToParameterValueKey>Currency</StringToParameterValueKey>
<StringToParameterValueValue>
<ParameterType>String</ParameterType>
<NonTabularValue>USD</NonTabularValue>
<TableValue/>
</StringToParameterValueValue>
</StringToParameterValueEntry>
<StringToParameterValueEntry>
<StringToParameterValueKey>Final Fixing Date</StringToParameterValueKey>
<StringToParameterValueValue>
<ParameterType>Date</ParameterType>
<NonTabularValue>15-Apr-14</NonTabularValue>
<TableValue/>
</StringToParameterValueValue>
</StringToParameterValueEntry>
<StringToParameterValueEntry>
<StringToParameterValueKey>Ticker</StringToParameterValueKey>
<StringToParameterValueValue>
<ParameterType>String</ParameterType>
<NonTabularValue>C</NonTabularValue>
<TableValue/>
</StringToParameterValueValue>
</StringToParameterValueEntry>
<StringToParameterValueEntry>
<StringToParameterValueKey>Flavor</StringToParameterValueKey>
<StringToParameterValueValue>
<ParameterType>String</ParameterType>
<NonTabularValue>Put</NonTabularValue>
<TableValue/>
</StringToParameterValueValue>
</StringToParameterValueEntry>
<StringToParameterValueEntry>
<StringToParameterValueKey>Position</StringToParameterValueKey>
<StringToParameterValueValue>
<ParameterType>String</ParameterType>
<NonTabularValue>Sell</NonTabularValue>
<TableValue/>
</StringToParameterValueValue>
</StringToParameterValueEntry>
<StringToParameterValueEntry>
<StringToParameterValueKey>Number of shares</StringToParameterValueKey>
<StringToParameterValueValue>
<ParameterType>Double</ParameterType>
<NonTabularValue>5</NonTabularValue>
<TableValue/>
</StringToParameterValueValue>
</StringToParameterValueEntry>
<StringToParameterValueEntry>
<StringToParameterValueKey>Strike</StringToParameterValueKey>
<StringToParameterValueValue>
<ParameterType>Double</ParameterType>
<NonTabularValue>40</NonTabularValue>
<TableValue/>
</StringToParameterValueValue>
</StringToParameterValueEntry>
</TradeParameters>
</Trades>
</TempTradeList>
</CalcRequestTradeParam>
<CalcRequestMarketParam>
<Expression>Id >= 0</Expression>
</CalcRequestMarketParam>
<CalculateRequestOutputs>PV</CalculateRequestOutputs>
<Currency>USD</Currency>
<TaskName>XML Request Test</TaskName>
<JobCount>10</JobCount>
<CalculationMethod>OnceAndHold</CalculationMethod>
<TimeFactorSeconds>0</TimeFactorSeconds>
<ProcessorName/>
<ProcessorOptions/>
</RequestInfo>
<ResultInfo>
<TaskId>0</TaskId>
<TradeStartIndex>0</TradeStartIndex>
<TradeNum>15</TradeNum>
<MarketStartIndex>0</MarketStartIndex>
<MarketNum>1</MarketNum>
<ResultRequestOutputs>Template</ResultRequestOutputs>
<ResultRequestOutputs>Currency</ResultRequestOutputs>
<ResultRequestOutputs>PV</ResultRequestOutputs>
<RequestType>Individual</RequestType>
<GroupSelection/>
</ResultInfo>
<RequestTimeoutMilliseconds>60000</RequestTimeoutMilliseconds>
</calculateParams>
</Operation>
</OperationList>
</CAS>
Please suggest.
Upvotes: 2
Views: 2551
Reputation: 7537
If you really want to read it in as a string and don't want to do XMLDocument.Load()
as others have suggested, you can do XMLDocument.LoadXml()
, but it should be as a string, first:
string myFilePath = @"C:\MappingFiles\InputFile.xml";
string allText = File.ReadAllText(myFilePath);
XmlDocument xmlDoc = new XmlDocument();
try
{
xmlDoc.LoadXml(allText);
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex.Message);
}
I found that this can work even when .Load()
on the file, itself, does not.
Upvotes: 0
Reputation: 35696
Your calling the wrong method, see this question and answer.
You should be calling XmlDocument.Load
.
In fact, you'd be better off doing
var doc = XDocument.Load("path");
and using linq to xml.
Upvotes: 4
Reputation: 2709
Use XMLDocument.Load(). This accepts an xml file
whereas XMLDocument.LoadXml() accepts an xml string.
Upvotes: 1