Laden...

XPath Query Problem

Erstellt von w1z4rd2003 vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.658 Views
w1z4rd2003 Themenstarter:in
624 Beiträge seit 2006
vor 12 Jahren
XPath Query Problem

verwendetes Datenbanksystem: <XML>

Guten Tag,

Ich hab ein Problem und zwar möchte ich aus folgendem XML


<?xml version="1.0" encoding="UTF-8"?>
<?xfa generator="XFA2_4" APIVersion="2.8.8118.0"?>
<xdp:xdp xmlns:xdp="http://ns.adobe.com/xdp/" timeStamp="2011-09-26T09:12:36Z" uuid="53d32999-07b7-467e-9872-2aae02e337fb">
   <xfa:datasets xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/">
      <xfa:data>
         <FuJForm>
            <Data>
               <IssuerInfo>
                  <ReceiverUrl>http://localhost/sites/gk/default.aspx</ReceiverUrl>
                  <ReceiverList>http://localhost/sites/gk/1</ReceiverList>
                  <ReceiverContentType>MyContentTypeSonderfänge</ReceiverContentType>
                  <ReceiverAdditionalInfo />
               </IssuerInfo>
               <FormData>
                  <fujDateOfReceipt>2011-09-30</fujDateOfReceipt>
                  <Title>b9</Title>
                  <fujPrename>asdf</fujPrename>
                  <fujLastName>asdfasdf</fujLastName>
                  <fujAddress>wasdf</fujAddress>
                  <fujZip>123.00000000</fujZip>
                  <fujCity>asdf</fujCity>
                  <fujStatement>asdf</fujStatement>
               </FormData>
            </Data>
         </FuJForm>
      </xfa:data>
   </xfa:datasets>

der ganze Inhalt von <FormData> auslesen. Mit XPath bringe ich es aber irgendwie nicht zustande. Hab auf http://xpath.online-toolz.com/tools/xpath-editor.php schon alles versucht um eine XPath Expression hinzukriegen die mir genau dies zurückliefert aber leider ohne Erfolg. Kann mir da jemand helfen?


                    doc.LoadXml(content);
                    XmlElement root = doc.DocumentElement;
                    XmlNode fj = root.SelectSingleNode("/FuJForm");

G
538 Beiträge seit 2008
vor 12 Jahren

Versuche mal

doc.LoadXml(content);
XmlElement root = doc.DocumentElement;
XmlNode fj = root.SelectSingleNode("//FormData");

Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)

w1z4rd2003 Themenstarter:in
624 Beiträge seit 2006
vor 12 Jahren

Hallo Grumbler,

Vielen Dank, der erste Teil funktioniert so mit zwei //.

Mein ganzes Xml (Request) sieht so aus


<?xml version="1.0" encoding="UTF-8"?>
<?xfa generator="XFA2_4" APIVersion="2.8.8118.0"?>
<xdp:xdp xmlns:xdp="http://ns.adobe.com/xdp/" timeStamp="2011-09-26T09:12:36Z" uuid="53d32999-07b7-467e-9872-2aae02e337fb">
   <xfa:datasets xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/">
      <xfa:data>
         <FuJForm>
            <Data>
               <IssuerInfo>
                  <ReceiverUrl>http://localhost/sites/gk/default.aspx</ReceiverUrl>
                  <ReceiverList>http://localhostsites/gk/Fischerei</ReceiverList>
                  <ReceiverContentType>MyContentType</ReceiverContentType>
                  <ReceiverAdditionalInfo />
               </IssuerInfo>
               <FormData>
                  <fujDateOfReceipt>2011-09-30</fujDateOfReceipt>
                  <Title>b9</Title>
                  <fujPrename>asdf</fujPrename>
                  <fujLastName>asdfasdf</fujLastName>
               </FormData>
            </Data>
         </FuJForm>
      </xfa:data>
   </xfa:datasets>
   <pdf xmlns="http://ns.adobe.com/xdp/pdf/">
      <document>
         <?KeepOnDisk?>
         <chunk>JVBERi0xLjcNJeLjz9MNCjc1IDAgb2JqDTw8L0xpbmVhcml6ZWQgMS9MIDE2MjM5MS9PIDgwL0Ug
ODExNjkvTiAxL1QgMTYyMDM4L0ggWyA1MTMgMjE1XT4+DWVuZG9iag0gICAgICAgICAgICAgICAg
DQo5MCAwIG9iag08PC9EZWNvZGVQYXJtczw8L0NvbHVtbnMgNS9QcmVkaWN0b3IgMTI+Pi9GaWx0
ZXIvRmxhdGVEZWNvZGUvSURbPENGNTVBMjNFQzJBQzVGNERCNUQzMzg1N0E5MTVDNUUzPjw3Mzgy
QTlEQjU2NjcwRDQzOUE2Qjg1QTlGMjhFM0JBNT5dL0luZGV4Wzc1IDQ3XS9JbmZvIDc0IDAgUi9M
ZW5ndGggODYvUHJldiAxNjIwMzkvUm9vdCA3NiAwIFIvU2l6ZSAxMjIvVHlwZS9YUmVmL1dbMSAz
IDFdPj5zdHJlYW0NCmjeYmJkYBBgYGJgYDoBIhk3gNn3wOwoEMmyB8x+CRY/ACQZmZ+C2AxfwCKc
YPZREMnHD1b/E8yOAJL/z3kwMAHNfwRWw8A4ZMj/DEyrHwMEGAAadA9jDQplbmRzdHJlYW0NZW5k
b2JqDXN0YXJ0eHJlZg0KMA0KJSVFT0YNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0K
MTIxIDAgb2JqDTw8L0MgMTE5L0ZpbHRlci9GbGF0ZURlY29kZS9JIDE0NC9MZW5ndGggMTIyL1Mg
NDAvViA5ND4+c3RyZWFtDQpo3mJgYOBlYGDayMDAwGjZyYAKmIGYhYHjAENHB5IoLxQzMBxlEGTo
</chunk>
      </document>
   </pdf>
   <xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve"><annots /></xfdf>
</xdp:xdp>

Für den Teil FuJForm funktioniert das so mit zwei //, für den Teil chunk aber nicht.

Ich müsste jetzt noch den chunk auslesen könne. Ist das überhaupt möglich in dieser konstellation?

Gruss und Vielen Dank

G
538 Beiträge seit 2008
vor 12 Jahren

Mal so als hinweis zu xpath:


/ = root (also oberste Element-Ebene)
// = suche überall
/*/ = eine Ebene tiefer als Root
/Name = Ein bestimmtes Element

für den Chunk wäre also der "schnellste" Pfad sowas:

/xdp:xdp/pdf/document/chunk

Was mir allerdings ein Rätsel ist:

<?KeepOnDisk?>

Ich kann dir nicht sagen, wie sich (und ob) das auf nachfolgende Elemente auswirkt...

Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)

V
66 Beiträge seit 2010
vor 12 Jahren

[...] für den Chunk wäre also der "schnellste" Pfad sowas:

/xdp:xdp/pdf/document/chunk  

[...]

Müsste hier der Namespace nicht noch Berücksichtigung finden?