您好我在xml文件下面使用下面的代码 -
加载到xml文档中XmlDocument Doc = new XmlDocument();
Doc.LoadXml(@"C:\MappingFiles\InputFile.xml");
但它的抛出错误 - 根级别的数据无效。第1行,第1位。
Xml文件完全结构化仍然是它的抛出错误。
<?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>
请建议。
答案 0 :(得分:3)
您调用了错误的方法,请参阅this question and answer.
您应该致电XmlDocument.Load
。
事实上,你做得更好
var doc = XDocument.Load("path");
并使用linq to xml.
答案 1 :(得分:0)
使用XMLDocument.Load()。这接受xml文件
而XMLDocument.LoadXml()接受xml字符串。
答案 2 :(得分:0)
如果您真的想以字符串形式读取它,并且不想像其他人建议的那样执行XMLDocument.Load()
,则可以执行XMLDocument.LoadXml()
,但是它应该以字符串形式进行,首先:
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);
}
我发现,即使文件上的.Load()
本身不起作用,这也可以工作。