3

このxml構造からc#を使用して、asp.netで属性ows_AZPersonnummerを読み取るのを手伝ってもらえますか

<listitems 
  xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" 
  xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" 
  xmlns:rs="urn:schemas-microsoft-com:rowset"
  xmlns:z="#RowsetSchema"
  xmlns="http://schemas.microsoft.com/sharepoint/soap/">
<rs:data ItemCount="1">
   <z:row 
      ows_AZNamnUppdragsansvarig="Peter" 
      ows_AZTypAvUtbetalning="Arvode till privatperson" 
      ows_AZPersonnummer="196202081276"
      ows_AZPlusgiro="5456436534"
      ows_MetaInfo="1;#"
      ows__ModerationStatus="0"
      ows__Level="1" ows_ID="1"
      ows_owshiddenversion="6"
      ows_UniqueId="1;#{11E4AD4C-7931-46D8-80BB-7E482C605990}"
      ows_FSObjType="1;#0"
      ows_Created="2009-04-15T08:29:32Z"
      ows_FileRef="1;#uppdragsavtal/Lists/Uppdragsavtal/1_.000" 
    />
</rs:data>
</listitems>

値 196202081276 を取得します。

4

4 に答える 4

6

これをXmlDocumentオブジェクトで開きSelectNode、次の XPath で関数を使用します。

//*[local-name() = 'row']/@ows_AZPersonnummer

基本的に、これは、深さと名前空間に関係なく、「行」という名前のすべての要素を探し、そのows_AZPersonnummer属性を返します。発生する可能性のある名前空間の問題を回避するのに役立つはずです。

于 2009-05-12T17:09:31.207 に答える
5

XmlNamespaceManagerはあなたの友達です:

string xml = "..."; //your xml here
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);

XmlNamespaceManager nsm = new XmlNamespaceManager(new NameTable());
nsm.AddNamespace("z", "#RowsetSchema");

XmlNode n = doc.DocumentElement
               .SelectSingleNode("//@ows_AZPersonnummer", nsm);
Console.WriteLine(n.Value);

LINQ to XML を使用することもできます。

XDocument xd = XDocument.Parse(xml);
XNamespace xns = "#RowsetSchema";
string result1 = xd.Descendants(xns + "row")
            .First()
            .Attribute("ows_AZPersonnummer")
            .Value;
// Or...

string result2 =
    (from el in xd.Descendants(xns + "row")
     select el).First().Attribute("ows_AZPersonnummer").Value;
于 2009-05-12T17:18:46.137 に答える
0

XMLパーサーが必要だと思いますが、これは一般的だと思います。これは単純な XML 構造のように見えるため、処理コードはそれほど難しくありません。

于 2009-05-12T17:05:37.453 に答える
0

<%# Eval("path to attribute") %> を使用しますが、xml をロードする必要がありますが、DataSource があります。

それ以外の場合は、XmlTextReader を使用して読み込むことができます。ここにがあります。

于 2009-05-12T17:16:09.683 に答える