【问题标题】:Xdocument throws error while XMLdocument loads sucessfully the same xml string当 XMLdocument 成功加载相同的 xml 字符串时,Xdocument 抛出错误
【发布时间】:2014-09-04 20:18:23
【问题描述】:

现有项目从字符串 transactionXML 加载 XMLDocument,就像

 \n\t<Transaction>
  \n\t\t<TransactionId>6109</TransactionId>
  n\t\t<TransactionType>ClaimsCorrespondenceEvent
 </TransactionType>\n\t\t<TransactionStatus>

以下代码成功加载xml:

   document.LoadXml(transactionXML);

但下面的代码失败并给出了引用 \n\t 等的无效字符的异常。

     XDocument.Load(transactionXML);

我需要使用 XDocument,因为我正在使用 XMLDocument 中不可用的 XDocument 的后代方法。

请问有没有办法使用 XDocument 加载上述字符串。或者,我如何使用 XMLdocument 来获取所有节点以及节点名称为“Transaction”的子节点

示例 XML 将是:

<Transactions>
  <Transaction>
   <Version> 1 </Version>
   <Id> 2 </Id>
  </Transaction>
  <Transaction>
     <Version> 2 </Version>
     <Id> 3 </Id>
    </Transaction>
   <Transaction>
     <Version> 3 </Version>
     <Id> 4 </Id>
   </Transaction>
</Transactions>

我想要节点 Transaction 的单独 XML 及其子元素,例如:

Ist XML 集

    <Transaction>
     <Version> 1 </Version>
     <Id> 2 </Id>
    </Transaction>

第二个 XML 集

  <Transaction>
     <Version> 2 </Version>
     <Id> 3 </Id>
    </Transaction>

第 3 个 XML 集

   <Transaction>
     <Version> 3 </Version>
     <Id> 4 </Id>
   </Transaction>

如果有人可以告诉我该怎么做。

【问题讨论】:

    标签: c# xml


    【解决方案1】:

    对于XDcoument,要从字符串加载xml,需要使用Parse而不是Load; Load 接受文件路径而不是 xml 字符串,试试:

    var xml = XDocument.Parse(transactionXML);
    

    http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument(v=vs.110).aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-23
      • 1970-01-01
      • 1970-01-01
      • 2020-07-01
      • 2011-11-30
      • 1970-01-01
      • 2019-08-03
      • 1970-01-01
      相关资源
      最近更新 更多