Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Namespace Manager or XsltContext needed. This query has a prefix, variable, or user-defined function

Tags:

c#

xml

asp.net

I have following XML

<DataTable xmlns = "http://schemas.datacontract.org/2004/07/System.Data">
    <xs:schema
        id = "NewDataSet"
        xmlns = ""
        xmlns:xs = "http://www.w3.org/2001/XMLSchema"
        xmlns:msdata = "urn:schemas-microsoft-com:xml-msdata">
        <xs:element
            name = "NewDataSet"
            msdata:IsDataSet = "true"
            msdata:MainDataTable = "Table"
            msdata:UseCurrentLocale = "true">
            <xs:complexType>
                <xs:choice minOccurs = "0" maxOccurs = "unbounded">
                    <xs:element name = "Table">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element
                                    name = "Id"
                                    type = "xs:int"
                                    minOccurs = "0"/>
                                <xs:element
                                    name = "Industry"
                                    type = "xs:string"
                                    minOccurs = "0"/>
                                <xs:element
                                    name = "ParentId"
                                    type = "xs:int"
                                    minOccurs = "0"/>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                </xs:choice>
            </xs:complexType>
        </xs:element>
    </xs:schema>
    <diffgr:diffgram xmlns:msdata = "urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr = "urn:schemas-microsoft-com:xml-diffgram-v1">
        <NewDataSet xmlns = "">
            <Table diffgr:id = "Table1" msdata:rowOrder = "0">
                <Id>1592</Id>
                <Industry>Fortune 100</Industry>
                <ParentId>1810</ParentId>
            </Table>
            <Table diffgr:id = "Table2" msdata:rowOrder = "1">
                <Id>1601</Id>
                <Industry>Oil &amp; Gas Operations</Industry>
                <ParentId>0</ParentId>
            </Table>
             </NewDataSet>
    </diffgr:diffgram>
</DataTable>

I need nodes with parentID = 0

but when I use following code:

 Dim parentNodes As XmlNodeList = xml_node.SelectNodes("/DataTable/diffgr:diffgram/NewDataSet/Table[ParentId=0]")

I get this error

Namespace Manager or XsltContext needed. This query has a prefix, variable, or user-defined function.

Please suggest solution

like image 408
DotnetSparrow Avatar asked Feb 01 '26 07:02

DotnetSparrow


2 Answers

You need to add the following before SelectNodes

XmlNamespaceManager xmlnsManager = new XmlNamespaceManager(xmldoc.NameTable);
xmlnsManager.AddNamespace("bk", "urn:Books")
xmlnsManager.AddNamespace("pub", "urn:Publisher")
like image 171
Abi Bellamkonda Avatar answered Feb 03 '26 19:02

Abi Bellamkonda


for the example shown it should be:

XmlNamespaceManager xmlnsManager = new XmlNamespaceManager(xmldoc.NameTable);
xmlnsManager.AddNamespace("xs", "http://www.w3.org/2001/XMLSchema")
xmlnsManager.AddNamespace("msdata", "urn:schemas-microsoft-com:xml-msdata")
like image 35
energyguy78 Avatar answered Feb 03 '26 21:02

energyguy78



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!