【发布时间】:2011-11-15 06:26:44
【问题描述】:
我有一些 XML 数据(类似于下面的示例),我想读取代码中的值。
为什么我必须指定默认命名空间来访问每个元素?我本来希望所有元素都使用默认命名空间。
有没有更合乎逻辑的方式来实现我的目标?
示例 XML:
<?xml version="1.0" encoding="UTF-8"?>
<ReceiptsBatch xmlns="http://www.secretsonline.gov.uk/secrets">
<MessageHeader>
<MessageID>00000173</MessageID>
<Timestamp>2009-10-28T16:50:01</Timestamp>
<MessageCheck>BX4f+RmNCVCsT5g</MessageCheck>
</MessageHeader>
<Receipts>
<Receipt>
<Status>OK</Status>
</Receipt>
</Receipts>
</ReceiptsBatch>
读取xml元素的代码:
XDocument xDoc = XDocument.Load( FileInPath );
XNamespace ns = "http://www.secretsonline.gov.uk/secrets";
XElement MessageCheck = xDoc.Element(ns+ "MessageHeader").Element(ns+"MessageCheck");
XElement MessageBody = xDoc.Element("Receipts");
【问题讨论】:
-
合乎逻辑的方式是为每个元素指定命名空间。仅仅因为您不必在每个元素中重复
xmlns声明并不意味着子元素位于默认命名空间 (xmlns="") 中。 -
是否可以清除默认命名空间,以免我不得不在每个元素名称中添加“ns+”?
标签: c# xml linq-to-xml xnamespace