C# 如何从包含冒号的XML元素中获取值

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变体。最后,我需要字符串中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(“位置”).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 += "|";
}