由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
DotNet版 - 心得:use XPath (+namespace)
相关主题
一个xml的问题。BUG! Re: xmldocument and webservice
using weather XML feed in C# - 2 Performance Profiling
刚看到的有趣观点Anybody use HtmlAgilityPack?
问一个linq to sql编程问题 (转载)请教一个HTMLelement问题
请问:关于C#和XML的问题baozi for help a simple way C# program
如何获取一个比较大的xml file从一个webserive问个问题
visual studio为什么不加eclipse修改建议的功能HttpWebRequest小程序
xmldocument and webservice question 关于SqlDataAdapter的初级问题求助
相关话题的讨论汇总
话题: xml话题: xpath话题: namespace话题: mapping
进入DotNet版参与讨论
1 (共1页)
c**t
发帖数: 2744
1
因为工作的需要,要parse非常复杂的xml.用donet来parse XML非常方便,尤其用XPath
直接选取node(s)。但是当xml比较复杂的时候,比如从crystal reports直接导出的xml
,通常的办法:
XmlDocument xml = new XmlDocument();
xml.Load( PathToXmlFile );
XmlNodeList selection = xml.SelectNodes(strXPathExpression);
就行不通:明明xml.innerXml不空,selection.Count总是0。去
掉namespace就可以了。经过一番Google,终于找到答案:在SelectNodes前加上
XmlNamespaceManager nsmgr = new XmlNamespanceManager(xml.NameTable);
nsmgr.AddNamespace("a", "http://....");
nsmgr.AddNamespace("b", "urn:....");
XmlNodeList selection =
d****d
发帖数: 133
2
有没有试过Linq to Xml?

XPath
xml

【在 c**t 的大作中提到】
: 因为工作的需要,要parse非常复杂的xml.用donet来parse XML非常方便,尤其用XPath
: 直接选取node(s)。但是当xml比较复杂的时候,比如从crystal reports直接导出的xml
: ,通常的办法:
: XmlDocument xml = new XmlDocument();
: xml.Load( PathToXmlFile );
: XmlNodeList selection = xml.SelectNodes(strXPathExpression);
: 就行不通:明明xml.innerXml不空,selection.Count总是0。去
: 掉namespace就可以了。经过一番Google,终于找到答案:在SelectNodes前加上
: XmlNamespaceManager nsmgr = new XmlNamespanceManager(xml.NameTable);
: nsmgr.AddNamespace("a", "http://....");

l*s
发帖数: 783
3
最近用profiler看了一下程序,发现Linq.Mapping.AttributeMappingSource占了1M的
内存。还没看懂生存周期是多长。有没有办法降低呢?

【在 d****d 的大作中提到】
: 有没有试过Linq to Xml?
:
: XPath
: xml

d****d
发帖数: 133
4
你用的是class attributes定义的mapping?你的mapping有多大规模?
我觉得mapping还是应该长留内存吧,因为DataContext本身是short lived,
如果每次都重新生成一个mapping然后再生成DataContext,可能会更慢。

【在 l*s 的大作中提到】
: 最近用profiler看了一下程序,发现Linq.Mapping.AttributeMappingSource占了1M的
: 内存。还没看懂生存周期是多长。有没有办法降低呢?

l*s
发帖数: 783
5
用的是LinqToSQl的designer自动生成的tables和stored procedures的mapping.因为
datacontext是short lived. 估计这些mapping也是short lived。1M还是太大了点。

【在 d****d 的大作中提到】
: 你用的是class attributes定义的mapping?你的mapping有多大规模?
: 我觉得mapping还是应该长留内存吧,因为DataContext本身是short lived,
: 如果每次都重新生成一个mapping然后再生成DataContext,可能会更慢。

d****d
发帖数: 133
6
mapping不应该是short lived吧,否则每次生成datacontext都要重新建立一遍mapping
太慢了。

【在 l*s 的大作中提到】
: 用的是LinqToSQl的designer自动生成的tables和stored procedures的mapping.因为
: datacontext是short lived. 估计这些mapping也是short lived。1M还是太大了点。

c**t
发帖数: 2744
7
用Linq也许要加上namespace:
XNamespace ns = "urn:crystal-reports:schema";
var records = from r in xml.Document.Descendants(ns+"NameTag") select r;
...

【在 d****d 的大作中提到】
: 有没有试过Linq to Xml?
:
: XPath
: xml

k***e
发帖数: 7933
8
这个跟用什么都没有关系,如果xml里面有namesplace,
xpath当然也要。

XPath
xml

【在 c**t 的大作中提到】
: 因为工作的需要,要parse非常复杂的xml.用donet来parse XML非常方便,尤其用XPath
: 直接选取node(s)。但是当xml比较复杂的时候,比如从crystal reports直接导出的xml
: ,通常的办法:
: XmlDocument xml = new XmlDocument();
: xml.Load( PathToXmlFile );
: XmlNodeList selection = xml.SelectNodes(strXPathExpression);
: 就行不通:明明xml.innerXml不空,selection.Count总是0。去
: 掉namespace就可以了。经过一番Google,终于找到答案:在SelectNodes前加上
: XmlNamespaceManager nsmgr = new XmlNamespanceManager(xml.NameTable);
: nsmgr.AddNamespace("a", "http://....");

c**t
发帖数: 2744
9
Yes, you are right. If I'm not asked to do such a job, I might never know ab
out this.

【在 k***e 的大作中提到】
: 这个跟用什么都没有关系,如果xml里面有namesplace,
: xpath当然也要。
:
: XPath
: xml

1 (共1页)
进入DotNet版参与讨论
相关主题
关于SqlDataAdapter的初级问题求助请问:关于C#和XML的问题
DALFactory in PetShop 3如何获取一个比较大的xml file从一个webserive
listbox 的问题visual studio为什么不加eclipse修改建议的功能
Does .NET have built-in Cryptography?xmldocument and webservice question
一个xml的问题。BUG! Re: xmldocument and webservice
using weather XML feed in C# - 2 Performance Profiling
刚看到的有趣观点Anybody use HtmlAgilityPack?
问一个linq to sql编程问题 (转载)请教一个HTMLelement问题
相关话题的讨论汇总
话题: xml话题: xpath话题: namespace话题: mapping