C#Xpath查询 [英] C# Xpath query

查看:47
本文介绍了C#Xpath查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下XML文件,这个XML文件是由WriteXML函数生成的,它写入数据集数据。

<?xml version =" 1.0" standalone =" yes"?>
< FatawaBinBaz1DataSet xmlns =" http://tempuri.org/FatawaBinBaz1DataSet.xsd">
< cats>
< cat_id> 1< / cat_id>
< cat>تفسير< / cat>
< / cats>
< cats>
< cat_id> 2< / cat_id>
< cat>عقيدة< / cat>
< / cats>
< cats>
< cat_id> 3< / cat_id>
< cat>فقه< ; / cat>
< / cats>
< fatawa>
< ID> 1< / ID>
< title>حديثيأتيعلىالناسزمانيصلونولايصلون ماصحته< / title>
< question>مامدىصحةهذاالحديث:يأتيعلىالناسزمانيصلونولايصلون,وحبذالوكانهناكتعليقاعليهإذاكانصحيحا?< / question>
< answer> ;لاأعرفحالهذاالح يثوسنراجعهإنشاءاللهونتكلمعليهفيحلقةأخرىإنشاءالله,ذكرونابذلكإنشاءالله。< / answer>
< cat> 222< / cat>
< favor> false< / favor> ;< / fatawa>
< fatawa>
< ID> 2< / ID>< title>ماحكملبسالمرأةللبرقعإذاكانتقدتسترتمنتحت< ; /标题>
<问题>أسألعنالبرقعماحكملبسهإذاكانتالمرأةتتسترمنورائهبالغشاء,علمابأنلبسهوبيعهوشراءهأصبحشائعابينالكثيرمنالنساء< /问题>
<答案> ;لاأعلمبأسافيلبسالبرقعإذاكانالخرقالذيفيهبقدرالعينلابأسفيذلك;لأنهذاأمرمعلوممنقديمالزمان,والنبي-صلىالله عليهوسلم-نهىالمرأةالمحرمةأنتلبسالنقاب,وهويشبهالبرقع,ينقبفيهالعينيننقبانبقدرالعينين,فإذااستخدمتهالأنثىفيحاجاتهافيطريقهاأوعندبعضمنهوليسمحرمالهاكأخيزوجهاونحوذلكفلابأسفيذلك,وإذاكانفوقهشيءيستر العينين,ويحصلبهقضاءحاجتهامندونأنيضرهاذلكفهذامنبابالكمال。< / answer>
< cat> 29< / cat>
< favor> false< / favor>
< / fatawa>
< fatawa>
< ID> 3< / ID>
< title>الخلاففيلبسأنواعمعينةمنحليالمرأة< / title>
< question>ماصحةالأحاديثالواردةفيتحريملبسأنواعمعينةمنالحليالذهبيةعلىال ساء,كالسوار,والقلادة,والخاتم< /问题>
<答案>الواردفيذلكقسمان:قسمضعيف,وقسممنسوخ,والصوابأنهاتلبسمنالحليالمحلقةوغيرالمحلقة,منالقلائدوالأسورة,هذاهوالصواب,وهو الذيعليهأهلالعلم,وحكاهجماعةمنالعلماءإجماعأهلالعلمأنهلابأسعلىالمرأةفيلبسالمحلقمنالأسورةوالخواتم,لابأسبهذا,هذاهوالصواب,أماماأفتىبهبعضإخواننامنمنعذلكهوغلط,لاوجهله,بلالنهي عنهذامنسوخوبعضأولئكضعيفلاصحةله,والصوابالذيعليهأهلالعلمأنهلاحرجفيذلك。< / answer>
< cat> 29< / cat>
< favor> false< /赞成>
< / fata wa>

我想要的是编写一个代码来对这个XML文件进行一些查询,遗憾的是我所做的一切都没有正常工作,我得到了零节点。我需要在cat =某个值的条件下选择titles节点。

我写了以下代码:

XmlDocument MyXML = new XmlDocument();
MyXML.Load(" king.XML");

XmlNamespaceManager xmlmn = new XmlNamespaceManager(MyXML.NameTable);
XmlNodeList SelNodes = MyXML.DocumentElement.SelectNodes(" / fatawa");
你会告诉我你只选择fatwa节点,即使上面的代码生成零节点的原因,当我使用时,如何在节点列表中获得一些节点选择节点功能。

我正在等你的答案....

译文。

解决方案

< pre lang ="xc#"> XmlDocument doc = new XmlDocument();

doc.LoadXml("<?xml version ='1.0'?>" +

"< root>" +

"< fatawa>" +

"< title> Cat-100< / title>" +

"< cat> ; 100< / cat>" +

"< / fatawa>" +

"< fatawa>" +

"< title> Cat-200< / title>" +

"< cat> 200< / cat>" +

" < / fatawa>" +

"< fatawa>" +

"< title> Cat-300< / title>" +

"< cat> 300< / cat>" +

& QUOT;< / fatawa>" +

"< / root>");





//获取Cat为200或更高的标题。

XmlNodeList nodes = doc.DocumentElement.SelectNodes(" fatawa [cat> = 200] / title");

foreach(节点中的XmlNode)

{

Console.WriteLine(n.InnerText);

}


这样的事情?

HTH
//迈克尔


I have the following XML File, This XML file was generated by WriteXML function, it writes the dataset data.

<?xml version="1.0" standalone="yes"?>
<FatawaBinBaz1DataSet xmlns="http://tempuri.org/FatawaBinBaz1DataSet.xsd">
  <cats>
    <cat_id>1</cat_id>
    <cat>تفسير</cat>
  </cats>
  <cats>
    <cat_id>2</cat_id>
    <cat>عقيدة</cat>
  </cats>
  <cats>
    <cat_id>3</cat_id>
    <cat>فقه</cat>
  </cats>
<fatawa>
    <ID>1</ID>
    <title>حديث يأتي على الناس زمان يصلون ولا يصلون ما صحته</title>
    <question>ما مدى صحة هذا الحديث: يأتي على الناس زمان يصلون ولا يصلون، وحبذا لو كان هناك تعليقاً عليه إذا كان صحيحاً؟</question>
    <answer>لا أعرف حال هذا الحديث وسنراجعه إن شاء الله ونتكلم عليه في حلقةٍ أخرى إن شاء الله، ذكرونا بذلك إن شاء الله.</answer>
    <cat>222</cat>
    <favour>false</favour>
  </fatawa>
  <fatawa>
    <ID>2</ID>
    <title>ما حكم لبس المرأة للبرقع إذا كانت قد تسترت من تحت</title>
    <question>أسأل عن البرقع ما حكم لبسه إذا كانت المرأة تتستر من ورائه بالغشاء، علما بأن لبسه وبيعه وشراءه أصبح شائعا بين الكثير من النساء؟</question>
    <answer>لا أعلم بأساً في لبس البرقع إذا كان الخرق الذي فيه بقدر العين لا بأس في ذلك ؛ لأن هذا أمر معلوم من قديم الزمان ، والنبي -صلى الله عليه وسلم- نهى المرأة المحرمة أن تلبس النقاب، وهو يشبه البرقع، ينقب فيه العينين نقبان بقدر العينين، فإذا استخدمته الأنثى في حاجاتها في طريقها أو عند بعض من هو ليس محرماً لها كأخي زوجها ونحو ذلك فلا بأس في ذلك، وإذا كان فوقه شيء يستر العينين، ويحصل به قضاء حاجتها من دون أن يضرها ذلك فهذا من باب الكمال.</answer>
    <cat>29</cat>
    <favour>false</favour>
  </fatawa>
  <fatawa>
    <ID>3</ID>
    <title>الخلاف في لبس أنواع معينة من حلي المرأة</title>
    <question>ما صحة الأحاديث الواردة في تحريم لبس أنواع معينةٍ من الحلي الذهبية على النساء، كالسوار، والقلادة،والخاتم؟</question>
    <answer>الوارد في ذلك قسمان: قسم ضعيف، وقسم منسوخ، والصواب أنها تلبس من الحلي المحلّقة وغير المحلّقة، من القلائد والأسورة، هذا هو الصواب، وهو الذي عليه أهل العلم، وحكاه جماعة من العلماء إجماع أهل العلم أنه لا بأس على المرأة في لبس المحلّق من الأسورة والخواتم، لا بأس بهذا، هذا هو الصواب، أما ما أفتى به بعض إخواننا من منع ذلك هو غلط، لا وجه له، بل النهي عن هذا منسوخ وبعض أولئك ضعيف لا صحة له، والصواب الذي عليه أهل العلم أنه لا حرج في ذلك.</answer>
    <cat>29</cat>
    <favour>false</favour>
  </fatawa>

What I want is to write a code which will do some queries over this XML file, unfortunately all what I did, didn't work correctly and I got zero nodes. I need to select the titles node under a condition that cat = certain value.


I wrote the following code:

XmlDocument MyXML = new XmlDocument();
            MyXML.Load("king.XML");

            XmlNamespaceManager xmlmn = new XmlNamespaceManager(MyXML.NameTable);
            XmlNodeList SelNodes = MyXML.DocumentElement.SelectNodes("/fatawa");

you will tell me that you select fatwa node only, the reason for that even the above code generates zero nodes, how can I get some nodes in the node list when I use the select nodes function.

I'm waiting your answers....

Thanx.

解决方案

            XmlDocument doc = new XmlDocument();

            doc.LoadXml("<?xml version='1.0' ?>" +

                        "<root>" +

                        "<fatawa>" +

                        "   <title>Cat-100</title>" +

                        "   <cat>100</cat>" +

                        "</fatawa>" +

                        "<fatawa>" +

                        "   <title>Cat-200</title>" +

                        "   <cat>200</cat>" +

                        "</fatawa>" +

                        "<fatawa>" +

                        "   <title>Cat-300</title>" +

                        "   <cat>300</cat>" +

                        "</fatawa>" +

                        "</root>");





            // Get title for where Cat is 200 or higher.

            XmlNodeList nodes = doc.DocumentElement.SelectNodes("fatawa[cat >= 200]/title");

            foreach(XmlNode n in nodes)

            {

                Console.WriteLine(n.InnerText);

            }

Somthing like this?

HTH
//Michael


这篇关于C#Xpath查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆