如何解析此XML文件?
<?xml version="1.0" encoding="UTF-8"?>
<V8Exch:_1CV8DtUD xmlns:V8Exch="http://www.1c.ru/V8/1CV8DtUD/" xmlns:core="http://v8.1c.ru/data" xmlns:v8="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<V8Exch:Data>
<v8:CatalogObject.Obj>
<v8:IsFolder>false</v8:IsFolder>
<v8:Ref xsi:type="v8:CatalogRef.Фізичніособи">433da912-9da5-11e5-822a-f079599615ce</v8:Ref>
<v8:DeletionMark>false</v8:DeletionMark>
<v8:Parent xsi:type="v8:CatalogRef.Фізичніособи">4541cd82-9cfb-11e5-b79c-f079599615ce</v8:Parent>
<v8:Code>000000007</v8:Code>
<v8:Description>FullName</v8:Description>
<v8:LastNmae>LastNmae</v8:LastNmae>
<v8:FirstName>FirstName</v8:FirstName>
<v8:SecondName>SecondName</v8:SecondName>
<v8:Edu>
<v8:НомерДиплома> 1234 </v8:НомерДиплома>
<v8:НазваНавчельногоЗакладу>Iмені Івана Франка</v8:НазваНавчельногоЗакладу>
<v8:датаВидачіДиплома>1981-06-27T00:00:00</v8:датаВидачіДиплома>
</v8:Edu>
</v8:CatalogObject.Obj>
</V8Exch:Data>
<PredefinedData/>
</V8Exch:_1CV8DtUD>
我正在尝试使用此C#
foreach (XmlNode node in doc.SelectNodes("CatalogObject"))
{ XmlDocument doc = new XmlDocument();
doc.Load("C:\\1.xml");
foreach (XmlNode child in node.ChildNodes)
richTextBox1.AppendText(string.Format("{0} = {1}", child.Name, child.InnerText));
richTextBox1.AppendText("--------------");
}
代码,但它不适用于此文件。它什么都不做。我必须用什么来解析这个文件? 谢谢!
答案 0 :(得分:1)
doc.SelectNodes("CatalogObject")
不符合,原因有两个:
所以正确的表达方式是:
doc.SelectNodes("//*[local-name()='CatalogObject.Obj']")
答案 1 :(得分:0)
试试xml linq
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication65
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
XDocument doc = XDocument.Load(FILENAME);
XElement _1CV8DtUD = (XElement)doc.FirstNode;
XNamespace ns = _1CV8DtUD.Name.Namespace;
XNamespace ns_V8 = _1CV8DtUD.GetNamespaceOfPrefix("v8");
XNamespace ns_xsi = _1CV8DtUD.GetNamespaceOfPrefix("xsi");
var results = _1CV8DtUD.Descendants(ns_V8 + "CatalogObject.Obj").Select(x => new {
isFolder = (Boolean)x.Element(ns_V8 + "IsFolder"),
type = (string)x.Element(ns_V8 + "Ref").Attribute(ns_xsi + "type")
}).FirstOrDefault();
}
}
}