我有要转换为XDocument对象的xml字符串。我一直在遵循Microsoft https://docs.microsoft.com/en-us/dotnet/api/system.xml.linq.xdocument.parse?view=netframework-4.7.2的示例。
问题不是像示例中那样得到以下结果
<!-- comment at the root level -->
<Root>
<Child>Content</Child>
</Root>
我得到了以下结果
{<!-- comment at the root level -->
<Root>
<Child>Content</Child>
</Root>}
BaseUri: ""
Declaration: {<?xml version="1.0"?>}
Document: {<!-- comment at the root level -->
<Root>
<Child>Content</Child>
</Root>}
DocumentType: null
FirstNode: {<!-- comment at the root level -->}
LastNode: {<Root>
<Child>Content</Child>
</Root>}
NextNode: null
NodeType: Document
Parent: null
PreviousNode: null
Root: {<Root>
<Child>Content</Child>
</Root>}
我想获得清晰的xml结果,而没有其他元数据,例如节点信息,如下所示
<!-- comment at the root level -->
<Root>
<Child>Content</Child>
</Root>
我正在使用XDocument.Parse()方法
我已经添加了我正在使用的代码
xmlString声明
var xmlString = @"<?xml version=""1.0""?><!-- comment at the root level --><Root><Child>Content</Child></Root>";
这就是我创建XDocument对象的方式
XDocument xDoc = XDocument.Parse(xmlString);
答案 0 :(得分:1)
MSDN的示例提供了预期的输出
<!-- comment at the root level -->
<Root>
<Child>Content</Child>
</Root>
您发布的输出看起来像XDocument
的所有属性。 XDocument
对象包含的信息不仅限于您解析的普通XML。
在示例中,行Console.WriteLine(doc);
产生的输出是您作为XML给出的字符串,因为它调用doc.ToString()
会产生“原始” XML输出。
因此,我认为您可能对包含更多信息(属性比原始xml)的XDocument
感到困惑。但是您可以使用LinqToXML(https://docs.microsoft.com/de-de/dotnet/csharp/programming-guide/concepts/linq/linq-to-xml-overview)完美地查询XML数据。
看起来解析工作完全正常(将原始XML解析为XDocument类型的对象)。