2014-02-06 58 views
0

我已经看到了有关此问题的各种问题,但似乎没有一个能解决我的问题。我建立了Umbraco网站,并将其网页内容作为XML存储在数据库列中。一个例子一个是下面:从数据库列中的字符串中提取XML值

enter image description here

很抱歉的屏幕抓取,而不是实际的代码,但是编辑保持剥离的事情了。

我最想做的是在c#/ Linq的页面上(一直试图操纵的是来自字符串值)还是在SQL查询中。能够拉出'url-name','nodeName'和'bodyText'字段。

非常感谢

+0

我不认为有任何方法可以将其更改为xml列吗? – Liath

+0

感谢您的回复。我恐怕不是。 – Adamsk1

回答

1

由于在数据库中的列没有被定义为XML,你可以拉出来的串并分析文本/字符串作为XML文档:

// xml would be pulled from the DB 
string xml = "<RunwayTextpage nodeName=\"Test page\" urlName=\"test-page\"><bodyText>Body Text</bodyText></RunwayTextpage>"; 

var doc = XDocument.Parse(xml); 

string nodeName = doc.Root.Attribute("nodeName").Value; 
string urlName = doc.Root.Attribute("urlName").Value; 
string bodyText = doc.Root.Element("bodyText").Value; 

另一种选择是在SQL查询本身中使用字符串操作,但最终会导致维护性下降,而上述内容很容易理解。

+0

感谢您的回复。我不确定这会如何帮助?正如你已经硬编码了XML的一个版本,并且我正在试图用上面显示的内容格式动态地执行此操作。 – Adamsk1

+1

XML不是硬编码的;这只是一个例子。将'xml'变量中的字符串替换为数据库中的字符串。 –

0

为什么不使用uQuery?不知道你的目的,但它有一个名为GetNodesByXPath的方法,通过查询内存xml缓存从XPath表达式获取节点或节点的集合。

如果你的树很大,在性能方面更明智。

+0

我会看看这个,谢谢。 – Adamsk1