2

嗨,我有以下 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>

请建议。

4

3 回答 3

4

您调用错误的方法,请参阅此问题和答案。

你应该打电话XmlDocument.Load


事实上,你最好这样做

var doc = XDocument.Load("path");

并使用linq to xml。

于 2013-05-24T13:07:32.903 回答
1

使用 XMLDocument.Load()。这接受一个xml文件

而 XMLDocument.LoadXml() 接受一个 xml 字符串。

于 2013-05-24T13:08:05.540 回答
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()文件本身不起作用,这也可以工作。

于 2020-02-10T20:35:09.737 回答