[英]Getting an element tree broken down from an XML
我有一個XML,我試圖分解元素,以便它顯示每個元素的路徑。 我在下面放了一個代碼示例以及想要查看的輸出。
XML數據如下。
<a:Clients>
<a:Client1>
<a:Initial>
<a:FirstName>data</a:FirstName>
<a:LastName>data</a:LastName>
</a:Initial>
<a:FirstName>data</a:FirstName>
<a:MiddleName />
<a:LastName>data</a:LastName>
<a:Title>Mr</a:Title>
<a:MaritalStatus>Divorced</a:MaritalStatus>
<a:MaidenName>data</a:MaidenName>
我想輸出它,所以它顯示為
客戶端/客戶端1
客戶端/客戶端1 / Initilal
客戶端/客戶端1 /初始/姓
等等因此,我想讓我的xml的所有元素按此順序出現在大型XML文檔中。 我不希望任何位於標簽之間的數據,僅是元素路徑。
我在vs 2015-控制台應用程序中編寫了以下代碼,嘗試按此順序輸出它,但無法正常工作。 我使用的C#代碼是:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using System.Xml.Linq;
using System.Xml.XPath;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
XNamespace ns = "http://www.test.net/author/1.0";
XDocument doc = XDocument.Load("test.xml");
var allElements = doc.Descendants();
foreach (var element in allElements)
Console.WriteLine(allElements);
Console.ReadLine();
}
}
}
我目前得到的輸出是:
我已經在Stack Overflow上尋找了答案,但似乎沒有什么是我真正需要的,而我嘗試過的也沒有用。 不確定是否有更簡單的方法可以做到這一點?
幫助將不勝感激
我設法以相反的順序進行操作:
客戶端1 /客戶端
所以我只是將所有內容輸入到列表中,然后以相反的順序打印出來,以使其順序正確。
XDocument doc = XDocument.Load("test.xml");
var allElements = doc.Descendants();
var elemants = doc.Elements();
foreach (var element in allElements)
{
var current = element;
List<string> names = new List<string>();
while (current.Parent != null)
{
names.Add(current.Name.LocalName);
current = current.Parent;
}
names.Add(current.Name.LocalName);
names.Reverse();
foreach(var name in names)
Console.Write(name + "/");
Console.WriteLine();
}
我希望這就是您所需要的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.