[英]Attribute value in root node of xml Linq to XML
當通過linq將xml解析為xml時,我遇到了一種奇怪的行為(至少對我而言)。 以下是我解析的第一個xml
`<?xml version="1.0" encoding="UTF-8"?>
<TestRun>
<UnitTestResult testName = "Arun" outcome = "i">
</UnitTestResult>
<UnitTestResult testName = "Arun1" outcome = "i">
</UnitTestResult>
</TestRun>`
我的代碼看起來像
XDocument doc = XDocument.Parse(fileContents);
var result = doc.Descendants("UnitTestResult");
以上工作正常。 但是,如果我的根節點包含屬性,則相同的代碼將無法正常工作。 可能是什么原因。 下面的XML示例
<?xml version="1.0" encoding="UTF-8"?>
<TestRun id="7903b4ff-8706-4379-b9e8-567034b70abb" name="inaambika@INBELW013312A 2016-02-26 16:55:14" runUser="STC\inaambika" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
<UnitTestResult testName = "Arun" outcome = "i">
</UnitTestResult>
<UnitTestResult testName = "Arun1" outcome = "i">
</UnitTestResult>
</TestRun>
XDocument doc = XDocument.Parse(fileContents);
var result = doc.Descendants("UnitTestResult");
下面的這個不是普通屬性,它是默認的名稱空間聲明:
xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010"
在根元素級別聲明了默認名稱空間后 ,根元素和所有沒有前綴的后代元素(在這種情況下,這意味着發布的XML中的所有元素)都在該名稱空間中。
您可以使用XNamespace
+ element-local-name引用命名空間中的元素:
XDocument doc = XDocument.Parse(fileContents);
XNamespace d = "http://microsoft.com/schemas/VisualStudio/TeamTest/2010"
var result = doc.Descendants(d+"UnitTestResult");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.