C#解析/保存XML文档

时间:2013-10-31 08:55:47

标签: c# xml asp.net-mvc arrays xml-parsing

我的任务似乎听起来很简单,但证明非常困难。我有一个XML文件,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<ref:ReferralDocument xmlns:ref="http://ref.com" xmlns:gen="http://ref.com"
                      xmlns:h="http://www.w3.org/1999/xhtml" xmlns:pbr="ref.com" 
                      xmlns:xsi="ref.com" schemaVersion="2.9">
 <ref:MessageDetails>
  <gen:TestID>
   <gen:IdValue>2412665651</gen:IdValue>
   <gen:IdScheme>Test</gen:IdScheme>
   <gen:IdType>Person</gen:IdType>
  </gen:TestID>
 </ref:MessageDetails>
 <gen:Name>
  <gen:StructuredName>
   <gen:GivenName>Test</gen:GivenName>
   <gen:FamilyName>Test</gen:FamilyName>
  </gen:StructuredName>
  <gen:NameType>Current Name</gen:NameType>
 </gen:Name>
</ref:MessageDataRef>

我想将每个XML元素读入XML Element对象。将它们存储在List元素或XML元素数组中。

//Create new document
var document = new XmlDocument();
document.Load("C:\\Users\\liam.mccann\\Documents\\test.xml");

加载后,我没有取得任何成功,只是看起来能够得到第一个。

如此简单的加载XML文档&gt;&gt;验证XML&gt;&gt;从第一个元素获取Scheme版本&gt;&gt;解析为XML元素列表。

解析后,我希望重新构建文档并再次保存它很容易。文件是一样的。

希望有人能够提供帮助!

1 个答案:

答案 0 :(得分:1)

  

我想将每个XML元素读入XML Element对象。作为商店   它们在列表或XML元素数组中。

您可以执行以下操作:

var array = document.SelectNodes("/descendant-or-self::*")
                    .OfType<XmlElement>()
                    .ToArray();

话虽如此,如果你想要的只是:

  

解析之后我希望重组文档很容易   再次保存。

然后将元素存储在数组中可能不是最佳方法。您可以使用XmlDocument类本身(或者更好的 - 新的LINQ方法:System.Xml.Linq.XDocument)。

以下是希望可以帮助您入门的MSDN文档:http://msdn.microsoft.com/en-us/library/bb387084%28v=vs.110%29.aspx