【发布时间】:2015-02-19 09:28:16
【问题描述】:
这是要解析的 XML,使用 XDocument:
<e xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<FormValues />
<Others>
<Bank>
<Key>FirstKey</Key>
<Value>FirstValue</Value>
</Bank>
<Bank>
<Key>SecondKey</Key>
<Value>SecondValue</Value>
</Bank>
<Bank>
<Key>ThirdKey</Key>
<Value>ThirdValue</Value>
</Bank>
<Bank>
<Key>FourthKey</Key>
<Value>FourthValue</Value>
</Bank>
</Others>
<Prob>ProbValue</Prob>
<URL>http://example.com/</URL>
<Method>GET</Method>
</e>
如果我这样做:
string doc = "<e xmlns:xsd..> ..... </e>";
System.Xml.Linq.XDocument docNew = System.Xml.Linq.XDocument.Parse(doc);
var elements = docNew.Root.Descendants();
@foreach (var element in elements)
{
<label>@element.Name.ToString():</label><span>@element.Value.ToString()</span>
}
它显示:
FormValues:
Others: FirstKeyFirstValueSecondKeySecondValueThirdKeyThirdValueFourthKeyFourthValue
Bank : FirstKeyFirstValue
Key : FirstKey
Value: FirstValue
Bank : SecondKeySecondValue
Key : SecondKey
Value: SecondValue
Bank : ThirdKeyThirdValue
Key : ThirdKey
Value: ThirdValue
Bank : FourthKeyFourthValue
Key : FourthKey
Value: FourthValue
Prob : ProbValue
URL : http://example.com/
Method:GET
我只希望键和值节点显示值。 喜欢:
Others
Bank
Key : FirstKey
Value: FirstValue
Bank
Key : SecondKey
Value: SecondValue
....
【问题讨论】:
-
使用 Descendants() 你有 XPath 然后:
.Descendants("Key or Value")或者在这种情况下还有.Descendants(Key|Value)。 -
var elementsKey = docNew.Root.Descendants("Key");然后 foreach 循环将只有键。我怎样才能包含, var elementsValue = docNew.Root.Descendants("Value");也一样?
-
使用
Descendants("Key or Value")或Descendants("Key|Value")。注意or逻辑或运算符和|联合运算符。 -
错误:|字符不能加到十六进制...
标签: c# .net xml xml-parsing