0

我的任务听起来很简单,但事实证明非常困难。我有一个如下的 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 对象。将它们存储在 XML 元素的列表或数组中。

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

在加载后,我没有成功获得每个元素,似乎只能获得第一个。

如此简单的加载 XML 文档 >> 验证 XML >> 从第一个元素获取方案版本 >> 解析到 XML 元素列表。

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

希望有人能够提供帮助!

4

1 回答 1

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

于 2013-10-31T09:25:02.647 回答