C# 如何从包含冒号的XML元素中获取值
为了实现上述目标,我尝试了各种各样的XNamespace变体。最后,我需要字符串中POSITION属性的值,并使用分隔符:“1 | 2 | 3 | 4” 代码:C# 如何从包含冒号的XML元素中获取值,c#,xml,linq,C#,Xml,Linq,为了实现上述目标,我尝试了各种各样的XNamespace变体。最后,我需要字符串中POSITION属性的值,并使用分隔符:“1 | 2 | 3 | 4” 代码: XNamespace z=“z”; xrs=“rs”; var doc=XDocument.Parse(返回值); IEnumerable list=doc.Root.subjects(rs+“数据”); foreach(列表中的变量项) { returnValue+=item.Element(z+“行”).Attribute(“位置”
XNamespace z=“z”;
xrs=“rs”;
var doc=XDocument.Parse(返回值);
IEnumerable list=doc.Root.subjects(rs+“数据”);
foreach(列表中的变量项)
{
returnValue+=item.Element(z+“行”).Attribute(“位置”).Value;
返回值+=“|”;
}
XML:
只需对代码稍加修改
XNamespace rs = "urn:schemas-microsoft-com:rowset"; //<---
XNamespace z = "#RowsetSchema"; //<---
var doc = XDocument.Parse(DATA);
IEnumerable<XElement> list = doc.Root.Descendants(rs + "data");
string returnValue = "";
foreach (var item in list.Elements(z + "row")) //<---
{
returnValue += item.Attribute("POSITION").Value; //<---
returnValue += "|";
}
XNamespace rs=“urn:schemas-microsoft-com:rowset”//rs是urn:schemas microsoft com:rowset
您可以将每个替换为linq:returnValue=string.Join(“|”),doc.Root.substands(rs+”数据”)。SelectMany(x=>x.Elements(z+“row”)。Select(x=>x.Attribute(“POSITION”).Value))代码>
<?xml version="1.0" encoding="UTF-8"?>
<string xmlns="http://schemas/Order">
<span id="TData">
<xml pagingEnabled="false" allDataMode="false" rowCount="4">
<s:Schema xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" id="RowsetSchema">
<s:ElementType name="row" content="eltOnly">
<s:AttributeType name="POSITION">
<s:datatype dt:type="i4" rs:maybenull="false"/>
</s:AttributeType>
<s:extends type="rs:rowbase"/>
</s:ElementType>
</s:Schema>
<rs:data xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
<z:row POSITION="1"/>
<z:row POSITION="2"/>
<z:row POSITION="3"/>
<z:row POSITION="4"/>
</rs:data>
</xml>
<p>
<form target="_self" id="pickForm" method="post"/>
</p>
</span>
</string>
XNamespace rs = "urn:schemas-microsoft-com:rowset"; //<---
XNamespace z = "#RowsetSchema"; //<---
var doc = XDocument.Parse(DATA);
IEnumerable<XElement> list = doc.Root.Descendants(rs + "data");
string returnValue = "";
foreach (var item in list.Elements(z + "row")) //<---
{
returnValue += item.Attribute("POSITION").Value; //<---
returnValue += "|";
}