C# C解析/保存XML文档
我的任务听起来很简单,但事实证明非常困难。我有一个如下所示的XML文件:C# C解析/保存XML文档,c#,xml,asp.net-mvc,arrays,xml-parsing,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"
<?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>>从第一个元素获取方案版本>>解析到XML元素列表
在解析之后,我希望可以很容易地重新构造文档并再次保存它。文件是一样的
希望有人能帮忙
我想将每个XML元素读入一个XML元素对象。作为商店
它们在XML元素的列表或数组中
//Create new document
var document = new XmlDocument();
document.Load("C:\\Users\\liam.mccann\\Documents\\test.xml");
您可以执行以下操作:
var array = document.SelectNodes("/descendant-or-self::*")
.OfType<XmlElement>()
.ToArray();
话虽如此,如果你只是想:
在解析之后,我希望可以很容易地重新构造文档和
再保存一次
然后将元素存储在数组中可能不是最佳方法。您可以使用XmlDocument类本身,或者更好地使用新的LINQ方法:System.Xml.LINQ.XDocument
以下是MSDN文档,希望能让您开始使用:。我得到一个可能的空分配给在选择节点行上标记为not null属性的实体,这意味着您正在使用Resharper:先生,非常感谢您。如上所述,答案只是表明这是可能的,尽管我仍然不相信这是最好的方法。下面是一段代码,如果您对警告感兴趣,可以避免得到警告:var xmlNodeList=document.SelectNodes/genderant或self::*;如果xmlNodeList!=null{var array=xmlNodeList.OfType.ToArray;}+1很好的答案,唯一的问题是!从文件中读取后,如u所建议的XML元素数组。是否可以在父子结构仍然存在的情况下保存它?取决于您所说的“存在”是什么意思。该数组中的XmlElements只是对原始文档元素的引用;更改它们将修改该文档。如果要保留原始文件的副本,可以使用document.Clone保存副本。