1

I have this XML response that I get from ARIN:

<nets xmlns="http://www.arin.net/whoisrws/core/v1" xmlns:ns2="http://www.arin.net/whoisrws/rdns/v1" xmlns:ns3="http://www.arin.net/whoisrws/netref/v2" termsOfUse="https://www.arin.net/whois_tou.html">
    <limitExceeded limit="256">false</limitExceeded>
    <net termsOfUse="https://www.arin.net/whois_tou.html">
        <registrationDate>2003-05-09T16:14:30-04:00</registrationDate>
        <ref>http://whois.arin.net/rest/net/NET-216-113-160-0-1</ref>
        <ns2:delegations termsOfUse="https://www.arin.net/whois_tou.html">
            <ns2:delegationRef name="186.113.216.in-addr.arpa.">http://whois.arin.net/rest/rdns/186.113.216.in-addr.arpa.</ns2:delegationRef>
            <ns2:delegationRef name="165.113.216.in-addr.arpa.">http://whois.arin.net/rest/rdns/165.113.216.in-addr.arpa.</ns2:delegationRef>
            <ns2:delegationRef name="173.113.216.in-addr.arpa.">http://whois.arin.net/rest/rdns/173.113.216.in-addr.arpa.</ns2:delegationRef>
            <ns2:delegationRef name="189.113.216.in-addr.arpa.">http://whois.arin.net/rest/rdns/189.113.216.in-addr.arpa.</ns2:delegationRef>
            <ns2:delegationRef name="169.113.216.in-addr.arpa.">http://whois.arin.net/rest/rdns/169.113.216.in-addr.arpa.</ns2:delegationRef>
            <ns2:delegationRef name="167.113.216.in-addr.arpa.">http://whois.arin.net/rest/rdns/167.113.216.in-addr.arpa.</ns2:delegationRef>
            <ns2:delegationRef name="171.113.216.in-addr.arpa.">http://whois.arin.net/rest/rdns/171.113.216.in-addr.arpa.</ns2:delegationRef>
            <ns2:delegationRef name="166.113.216.in-addr.arpa.">http://whois.arin.net/rest/rdns/166.113.216.in-addr.arpa.</ns2:delegationRef>
            <ns2:delegationRef name="190.113.216.in-addr.arpa.">http://whois.arin.net/rest/rdns/190.113.216.in-addr.arpa.</ns2:delegationRef>
            <ns2:delegationRef name="188.113.216.in-addr.arpa.">http://whois.arin.net/rest/rdns/188.113.216.in-addr.arpa.</ns2:delegationRef>
            <ns2:delegationRef name="176.113.216.in-addr.arpa.">http://whois.arin.net/rest/rdns/176.113.216.in-addr.arpa.</ns2:delegationRef>
            <ns2:delegationRef name="172.113.216.in-addr.arpa.">http://whois.arin.net/rest/rdns/172.113.216.in-addr.arpa.</ns2:delegationRef>
            <ns2:delegationRef name="170.113.216.in-addr.arpa.">http://whois.arin.net/rest/rdns/170.113.216.in-addr.arpa.</ns2:delegationRef>
            <ns2:delegationRef name="191.113.216.in-addr.arpa.">http://whois.arin.net/rest/rdns/191.113.216.in-addr.arpa.</ns2:delegationRef>
            <ns2:delegationRef name="174.113.216.in-addr.arpa.">http://whois.arin.net/rest/rdns/174.113.216.in-addr.arpa.</ns2:delegationRef>
            <ns2:delegationRef name="162.113.216.in-addr.arpa.">http://whois.arin.net/rest/rdns/162.113.216.in-addr.arpa.</ns2:delegationRef>
            <ns2:delegationRef name="185.113.216.in-addr.arpa.">http://whois.arin.net/rest/rdns/185.113.216.in-addr.arpa.</ns2:delegationRef>
            <ns2:delegationRef name="180.113.216.in-addr.arpa.">http://whois.arin.net/rest/rdns/180.113.216.in-addr.arpa.</ns2:delegationRef>
            <ns2:delegationRef name="168.113.216.in-addr.arpa.">http://whois.arin.net/rest/rdns/168.113.216.in-addr.arpa.</ns2:delegationRef>
            <ns2:delegationRef name="175.113.216.in-addr.arpa.">http://whois.arin.net/rest/rdns/175.113.216.in-addr.arpa.</ns2:delegationRef>
            <ns2:delegationRef name="161.113.216.in-addr.arpa.">http://whois.arin.net/rest/rdns/161.113.216.in-addr.arpa.</ns2:delegationRef>
            <ns2:delegationRef name="179.113.216.in-addr.arpa.">http://whois.arin.net/rest/rdns/179.113.216.in-addr.arpa.</ns2:delegationRef>
            <ns2:delegationRef name="177.113.216.in-addr.arpa.">http://whois.arin.net/rest/rdns/177.113.216.in-addr.arpa.</ns2:delegationRef>
            <ns2:delegationRef name="183.113.216.in-addr.arpa.">http://whois.arin.net/rest/rdns/183.113.216.in-addr.arpa.</ns2:delegationRef>
            <ns2:delegationRef name="181.113.216.in-addr.arpa.">http://whois.arin.net/rest/rdns/181.113.216.in-addr.arpa.</ns2:delegationRef>
            <ns2:delegationRef name="187.113.216.in-addr.arpa.">http://whois.arin.net/rest/rdns/187.113.216.in-addr.arpa.</ns2:delegationRef>
            <ns2:delegationRef name="163.113.216.in-addr.arpa.">http://whois.arin.net/rest/rdns/163.113.216.in-addr.arpa.</ns2:delegationRef>
            <ns2:delegationRef name="184.113.216.in-addr.arpa.">http://whois.arin.net/rest/rdns/184.113.216.in-addr.arpa.</ns2:delegationRef>
            <ns2:delegationRef name="160.113.216.in-addr.arpa.">http://whois.arin.net/rest/rdns/160.113.216.in-addr.arpa.</ns2:delegationRef>
            <ns2:delegationRef name="182.113.216.in-addr.arpa.">http://whois.arin.net/rest/rdns/182.113.216.in-addr.arpa.</ns2:delegationRef>
            <ns2:delegationRef name="178.113.216.in-addr.arpa.">http://whois.arin.net/rest/rdns/178.113.216.in-addr.arpa.</ns2:delegationRef>
            <ns2:delegationRef name="164.113.216.in-addr.arpa.">http://whois.arin.net/rest/rdns/164.113.216.in-addr.arpa.</ns2:delegationRef>
        </ns2:delegations>
        <endAddress>216.113.191.255</endAddress>
        <handle>NET-216-113-160-0-1</handle>
        <name>EBAY-QA-IT-1</name>
        <netBlocks>
            <netBlock>
                <cidrLength>19</cidrLength>
                <endAddress>216.113.191.255</endAddress>
                <description>Direct Assignment</description>
                <type>DS</type>
                <startAddress>216.113.160.0</startAddress>
            </netBlock>
        </netBlocks>
        <pocs termsOfUse="https://www.arin.net/whois_tou.html"/>
        <orgRef name="eBay, Inc" handle="EBAY">http://whois.arin.net/rest/org/EBAY</orgRef>
        <parentNetRef name="NET216" handle="NET-216-0-0-0-0">http://whois.arin.net/rest/net/NET-216-0-0-0-0</parentNetRef>
        <startAddress>216.113.160.0</startAddress>
        <updateDate>2012-03-02T08:03:18-05:00</updateDate>
        <version>4</version>
    </net>
</nets>

I am trying to get this information:

http://whois.arin.net/rest/org/EBAY

From this line:

<orgRef name="eBay, Inc" handle="EBAY">http://whois.arin.net/rest/org/EBAY</orgRef>

How can I get this information using C#?

4
  • I was trying to just parse the XML w/ XmlReader, but it seems like overkill. Maybe someone can help me determine what Regex rule I can use? Commented Oct 9, 2012 at 22:39
  • 1
    @Sugitime Regex's aren't good for parsing XML. Why not just use Linq-To-XML or the XmlReader? That's what they're made for. Commented Oct 9, 2012 at 22:41
  • @Sugitime, please don't try and use regex to parse XML, it makes it harder, not easier. See stackoverflow.com/a/1732454/383710 Commented Oct 9, 2012 at 22:41
  • XmlReader isn't that bad an idea in fact. The answers so far read the entire XML and store it into memory, which isn't really necessary here. Open the XML with an XMLReader and use MoveToElement. Then you just have to get the attribute you need. Commented Oct 9, 2012 at 22:43

3 Answers 3

7

Using Linq-Xml (available in .Net 3.5 and greater) you can do it using the following code snippet:

XNamespace xns = "http://www.arin.net/whoisrws/core/v1"; //The default xmlns from the root element.

var orgRefHandle =
  XDocument.Parse(xml)
  .Root
  .Element(xns + "net")
  .Element(xns + "orgRef")
  .Attribute("handle").Value;
Sign up to request clarification or add additional context in comments.

1 Comment

@Sugitime - Cool. You might want to check out LinqPad.net for an easy way test your Linq-Xml.
4

One way would be to use XmlDocument:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xmlString);

foreach(XmlElement ele in xmlDoc.DocumentElement.GetElementsByTagName("net"))
{
    // Writes value to console.
    Console.WriteLine(((XmlElement)ele.GetElementsByTagName("orgRef")).Attributes["handle"].Value);
}

1 Comment

Yeah, I also wasn't sure if you might want the ability to handle multiple net elements.
0

Load the content into an XmlDocument then you can use an XPath query to get a node's attribute using SelectSingleNode: /nets/limitexceeded/net/orgref/@Name and get the value.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.