在XmlDocument中加载xml文件时出错
本文关键字:文件 出错 xml 加载 XmlDocument | 更新日期: 2023-09-27 18:15:16
嗨,我有下面的xml文件,我试图在xml文件中加载使用下面的代码-
XmlDocument Doc = new XmlDocument();
Doc.LoadXml(@"C:'MappingFiles'InputFile.xml");
,但它抛出错误-根级别的数据无效。第一行,位置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>
请建议。
您调用了错误的方法,请参阅本问答。
你应该打电话给XmlDocument.Load
。
事实上,你最好还是做
var doc = XDocument.Load("path");
使用XMLDocument.Load()。它接受xml文件
而XMLDocument.LoadXml()接受xml字符串
如果你真的想读它作为一个字符串,而不想像其他人建议的那样做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()
本身不起作用时,这也可以工作。