Fabian
Fabian

Reputation: 63

C#/ XML Select Node Range

how do i select all Nodes between

"bname="1 Mose" cnumber="1" vnumber="1""

and

"bname="1 Mose" cnumber="3" vnumber="1"" ????

I tried to build an xPath

private String xPathFormatString = "/XMLBIBLE/BIBLEBOOK[@bname='{0}']/CHAPTER[@cnumber='{1}']/VERS[@vnumber='{2}']";
string xPath = String.Format(xPathFormatString, entry.NumberFrom + " " + entry.NameFrom, entry.ChapterFrom, entry.VersFrom);
nodeList = xmlDocument.SelectNodes(xPath);

but i dont know how to select all between two "CHAPTER" /Nodes. Missing something like

 betweenNodeList = xmlDocument.SelectAllNodesBetween(xPath1,xPath2);

.

<BIBLEBOOK bname="1 Mose" bnumber="1" bsname="1Mo">
    <CHAPTER cnumber="1">
      <VERS vnumber="1">A Text </VERS>
    </CHAPTER>
    <CHAPTER cnumber="2">
      <VERS vnumber="1">Another Text </VERS>
    </CHAPTER>
    <CHAPTER cnumber="3">
      <VERS vnumber="1">A third Text </VERS>
    </CHAPTER>
  </BIBLEBOOK>

Please help :/ Thanks ! :)

Upvotes: 0

Views: 157

Answers (1)

har07
har07

Reputation: 89305

You can use and to combine two conditions for lower and upper limit of cnumber value, for example (wrapped into lines for readability) :

/XMLBIBLE
/BIBLEBOOK[@bname='1 Mose']
/CHAPTER[@cnumber > 1 and @cnumber < 3]
/VERS[@vnumber=1]

Upvotes: 1

Related Questions