有人可以帮助我在这个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。
答案 0 :(得分:6)
在XmlDocument
对象中打开它,然后使用带有以下XPath的SelectNode
函数:
//*[local-name() = 'row']/@ows_AZPersonnummer
基本上,无论深度和名称空间如何,它都会查找名为“row”的每个元素,并返回它的ows_AZPersonnummer
属性。应该有助于避免您可能遇到的任何命名空间问题。
答案 1 :(得分: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;
答案 2 :(得分:0)
我说你需要一个XML解析器,我认为这很常见。这看起来像一个简单的XML结构,因此处理代码不应该太难。
答案 3 :(得分:0)
使用&lt;%#Eval(“属性路径”)%&gt;但是你需要加载xml有一个DataSource。
否则您可以使用XmlTextReader加载它。这是一个example。