Click here to Skip to main content
15,891,033 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I have been looking for the solution for the last 4 hours and have found a few pieces that help me read a standardized xml file, but doesn't allow me to read this.

I am also trying to store the parent node where "key="(not null)"" so it can't be Key="".

I am trying to pull what Key equals and the parent element from that.
I would really appreciate any help because this has been exhausting.
Thank you in advance.

HTML
<setspeed100>
	<primary device="Keyboard" key="Key_Numpad_4">
	<secondary device="{NoDevice}" key="">

<yawaxis_landing>
	<binding device="{NoDevice}" key="">
	<inverted value="0">
	<deadzone value="0.00000000">


What I have tried:

HTML
<pre lang="C#"> XmlDocument xmlDoc = new XmlDocument();
    var edXML = GetEDBindingsPath();
    var xml = XElement.Load(edXML);


That is as far as I've gotten because everything else uses a standardized format. 
Example of what I mean by standardized...


HTML
< Users >
  < User >
    < Name > John Smith </ Name >
    < test >
      < Date > 23.05.2011 </ Date >
      < points > 33 </ points >
    </ test >
    < test >
      < Date > 22.06.2011 </ Date >
      < points > 29 </ points >
    </ test >
  </ User >
</ Users >
Posted
Updated 19-Oct-16 21:59pm
Comments
johannesnestler 19-Oct-16 8:52am    
So with XML we mean a well formed XML document - lot's of code availabe to deal with this - you don't have XML here so you have to write your own parser - why did you think it was a good idea to treat this as XML in the first place (because it looks like XML from far away?
antaresinsomnious 19-Oct-16 9:50am    
Every XML Checker I ran it through said it was, but I am unfamiliar with XML. I figured it was since it's from a game developer. I figured that since they put at the top they knew what they was writing.
I almost got it figured out though(With my own parser), I just don't know why it lets certain things pass through...

You could try the XmlReader Class (System.Xml)[^], but that does not look like well-formed XML, so you may still have problems.
 
Share this answer
 
Comments
antaresinsomnious 19-Oct-16 6:15am    
I have been using the XmlReader Class.
It's completely not well formed at all. It was put out by Frontier Development for Elite Dangerous (It's their keybindings). I am afraid I will have to hard-code everything and I really don't want to do that because it just makes everything else harder in the end since I would have to change my xml file I am using any time I change my key bindings.
I haven't given up though.
Richard MacCutchan 19-Oct-16 6:45am    
You may need to talk to the people who produce the data. XML has a well known structure and set of rules, but if people don't follow them then there is not much that you can do with the standard classes.
Here is the link to my "XML"

<script src='http://pastie.org/10946087.js'>
</script>


My code could use some work I know, it's kind of messy right now, but I am going to clean it up and find out how to shorten it some.

C#
internal void ReadEDKeyBindings()
        {
            string edKB = GetEDBindingsPath();
            List<string> list = new List<string>();
            List<string> parent = new List<string>();
            List<string> child = new List<string>();
            XDocument doc = XDocument.Load(edKB);
            var allElements = doc.Descendants();

            var matchingElements = doc.Descendants()
                .Where(x => x.Attribute("Key") != null);


            foreach (var a in allElements)
            {
                string str = a.ToString();
                string[] pPart = str.Split(new[] { '\r' });
                foreach (string p in pPart)
                {
                    list.Add(p);
                }
            }
            foreach (string l in list)
            {
                if (!l.Contains("Buggy"))
                {
                    if (l.Contains("Key"))
                    {
                        try
                        {
                            string[] parts = l.Split(new[] { ' ' });
                            string sub = parts[6].Substring(5);
                            int last = sub.Length - 1;
                            sub = sub.Substring(0, last);
                            if (sub != "")
                            {
                                int index = list.IndexOf(l);

                                string tmp1 = list[index - 1];

                                string tmp2 = tmp1.Substring(4);
                                int iTmp = tmp2.Length - 1;
                                string p = tmp2.Substring(0, iTmp);
                                parent.Add(p);
                                child.Add(sub);
                            }
                        }
                        catch
                        {

                        }
                    }
                }
            }
            for (int i = 0; i < parent.Count(); i++)
            {
                Console.WriteLine("Index = " + i + " :  Parent : " + parent[i] + " : Child : " + child[i]);
            }
        }
 
Share this answer
 
This is the full "XML". The link I posted broke for some reason.

XML
<?xml version="1.0" encoding="UTF-8" ?>
<Root PresetName="Custom" MajorVersion="1" MinorVersion="8">
	<KeyboardLayout>en-US</KeyboardLayout>
	<LockedDevice>{NoDevice}</LockedDevice>
	<MouseXMode Value="Bindings_MouseRoll" />
	<MouseXDecay Value="0" />
	<MouseYMode Value="Bindings_MousePitch" />
	<MouseYDecay Value="0" />
	<MouseReset>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</MouseReset>
	<MouseSensitivity Value="1.00000000" />
	<MouseDecayRate Value="4.00000000" />
	<MouseDeadzone Value="0.05000000" />
	<MouseLinearity Value="1.00000000" />
	<MouseGUI Value="1" />
	<YawAxisRaw>
		<Binding Device="{NoDevice}" Key="" />
		<Inverted Value="0" />
		<Deadzone Value="0.00000000" />
	</YawAxisRaw>
	<YawLeftButton>
		<Primary Device="Keyboard" Key="Key_A" />
		<Secondary Device="{NoDevice}" Key="" />
	</YawLeftButton>
	<YawRightButton>
		<Primary Device="Keyboard" Key="Key_D" />
		<Secondary Device="{NoDevice}" Key="" />
	</YawRightButton>
	<YawToRollMode Value="Bindings_YawIntoRollNone" />
	<YawToRollSensitivity Value="0.40000001" />
	<YawToRollButton>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
		<ToggleOn Value="0" />
	</YawToRollButton>
	<RollAxisRaw>
		<Binding Device="{NoDevice}" Key="" />
		<Inverted Value="0" />
		<Deadzone Value="0.00000000" />
	</RollAxisRaw>
	<RollLeftButton>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</RollLeftButton>
	<RollRightButton>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</RollRightButton>
	<PitchAxisRaw>
		<Binding Device="{NoDevice}" Key="" />
		<Inverted Value="0" />
		<Deadzone Value="0.00000000" />
	</PitchAxisRaw>
	<PitchUpButton>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</PitchUpButton>
	<PitchDownButton>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</PitchDownButton>
	<LateralThrustRaw>
		<Binding Device="{NoDevice}" Key="" />
		<Inverted Value="0" />
		<Deadzone Value="0.00000000" />
	</LateralThrustRaw>
	<LeftThrustButton>
		<Primary Device="Keyboard" Key="Key_Q" />
		<Secondary Device="{NoDevice}" Key="" />
	</LeftThrustButton>
	<RightThrustButton>
		<Primary Device="Keyboard" Key="Key_E" />
		<Secondary Device="{NoDevice}" Key="" />
	</RightThrustButton>
	<VerticalThrustRaw>
		<Binding Device="{NoDevice}" Key="" />
		<Inverted Value="0" />
		<Deadzone Value="0.00000000" />
	</VerticalThrustRaw>
	<UpThrustButton>
		<Primary Device="Keyboard" Key="Key_R" />
		<Secondary Device="{NoDevice}" Key="" />
	</UpThrustButton>
	<DownThrustButton>
		<Primary Device="Keyboard" Key="Key_F" />
		<Secondary Device="{NoDevice}" Key="" />
	</DownThrustButton>
	<AheadThrust>
		<Binding Device="{NoDevice}" Key="" />
		<Inverted Value="0" />
		<Deadzone Value="0.00000000" />
	</AheadThrust>
	<ForwardThrustButton>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</ForwardThrustButton>
	<BackwardThrustButton>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</BackwardThrustButton>
	<YawAxisAlternate>
		<Binding Device="{NoDevice}" Key="" />
		<Inverted Value="0" />
		<Deadzone Value="0.00000000" />
	</YawAxisAlternate>
	<RollAxisAlternate>
		<Binding Device="{NoDevice}" Key="" />
		<Inverted Value="0" />
		<Deadzone Value="0.00000000" />
	</RollAxisAlternate>
	<PitchAxisAlternate>
		<Binding Device="{NoDevice}" Key="" />
		<Inverted Value="0" />
		<Deadzone Value="0.00000000" />
	</PitchAxisAlternate>
	<LateralThrustAlternate>
		<Binding Device="{NoDevice}" Key="" />
		<Inverted Value="0" />
		<Deadzone Value="0.00000000" />
	</LateralThrustAlternate>
	<VerticalThrustAlternate>
		<Binding Device="{NoDevice}" Key="" />
		<Inverted Value="0" />
		<Deadzone Value="0.00000000" />
	</VerticalThrustAlternate>
	<UseAlternateFlightValuesToggle>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
		<ToggleOn Value="1" />
	</UseAlternateFlightValuesToggle>
	<ThrottleAxis>
		<Binding Device="{NoDevice}" Key="" />
		<Inverted Value="0" />
		<Deadzone Value="0.00000000" />
	</ThrottleAxis>
	<ThrottleRange Value="" />
	<ToggleReverseThrottleInput>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
		<ToggleOn Value="1" />
	</ToggleReverseThrottleInput>
	<ForwardKey>
		<Primary Device="Keyboard" Key="Key_W" />
		<Secondary Device="{NoDevice}" Key="" />
	</ForwardKey>
	<BackwardKey>
		<Primary Device="Keyboard" Key="Key_S" />
		<Secondary Device="{NoDevice}" Key="" />
	</BackwardKey>
	<ThrottleIncrement Value="0.00000000" />
	<SetSpeedMinus100>
		<Primary Device="Keyboard" Key="Key_Numpad_9" />
		<Secondary Device="{NoDevice}" Key="" />
	</SetSpeedMinus100>
	<SetSpeedMinus75>
		<Primary Device="Keyboard" Key="Key_Numpad_8" />
		<Secondary Device="{NoDevice}" Key="" />
	</SetSpeedMinus75>
	<SetSpeedMinus50>
		<Primary Device="Keyboard" Key="Key_Numpad_7" />
		<Secondary Device="{NoDevice}" Key="" />
	</SetSpeedMinus50>
	<SetSpeedMinus25>
		<Primary Device="Keyboard" Key="Key_Numpad_6" />
		<Secondary Device="{NoDevice}" Key="" />
	</SetSpeedMinus25>
	<SetSpeedZero>
		<Primary Device="Keyboard" Key="Key_Numpad_0" />
		<Secondary Device="{NoDevice}" Key="" />
	</SetSpeedZero>
	<SetSpeed25>
		<Primary Device="Keyboard" Key="Key_Numpad_1" />
		<Secondary Device="{NoDevice}" Key="" />
	</SetSpeed25>
	<SetSpeed50>
		<Primary Device="Keyboard" Key="Key_Numpad_2" />
		<Secondary Device="{NoDevice}" Key="" />
	</SetSpeed50>
	<SetSpeed75>
		<Primary Device="Keyboard" Key="Key_Numpad_3" />
		<Secondary Device="{NoDevice}" Key="" />
	</SetSpeed75>
	<SetSpeed100>
		<Primary Device="Keyboard" Key="Key_Numpad_4" />
		<Secondary Device="{NoDevice}" Key="" />
	</SetSpeed100>
	<YawAxis_Landing>
		<Binding Device="{NoDevice}" Key="" />
		<Inverted Value="0" />
		<Deadzone Value="0.00000000" />
	</YawAxis_Landing>
	<YawLeftButton_Landing>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</YawLeftButton_Landing>
	<YawRightButton_Landing>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</YawRightButton_Landing>
	<YawToRollMode_Landing Value="" />
	<PitchAxis_Landing>
		<Binding Device="{NoDevice}" Key="" />
		<Inverted Value="0" />
		<Deadzone Value="0.00000000" />
	</PitchAxis_Landing>
	<PitchUpButton_Landing>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</PitchUpButton_Landing>
	<PitchDownButton_Landing>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</PitchDownButton_Landing>
	<RollAxis_Landing>
		<Binding Device="{NoDevice}" Key="" />
		<Inverted Value="0" />
		<Deadzone Value="0.00000000" />
	</RollAxis_Landing>
	<RollLeftButton_Landing>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</RollLeftButton_Landing>
	<RollRightButton_Landing>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</RollRightButton_Landing>
	<LateralThrust_Landing>
		<Binding Device="{NoDevice}" Key="" />
		<Inverted Value="0" />
		<Deadzone Value="0.00000000" />
	</LateralThrust_Landing>
	<LeftThrustButton_Landing>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</LeftThrustButton_Landing>
	<RightThrustButton_Landing>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</RightThrustButton_Landing>
	<VerticalThrust_Landing>
		<Binding Device="{NoDevice}" Key="" />
		<Inverted Value="0" />
		<Deadzone Value="0.00000000" />
	</VerticalThrust_Landing>
	<UpThrustButton_Landing>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</UpThrustButton_Landing>
	<DownThrustButton_Landing>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</DownThrustButton_Landing>
	<AheadThrust_Landing>
		<Binding Device="{NoDevice}" Key="" />
		<Inverted Value="0" />
		<Deadzone Value="0.00000000" />
	</AheadThrust_Landing>
	<ForwardThrustButton_Landing>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</ForwardThrustButton_Landing>
	<BackwardThrustButton_Landing>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</BackwardThrustButton_Landing>
	<ToggleFlightAssist>
		<Primary Device="Keyboard" Key="Key_Z" />
		<Secondary Device="{NoDevice}" Key="" />
		<ToggleOn Value="0" />
	</ToggleFlightAssist>
	<YawToRollMode_FAOff Value="" />
	<UseBoostJuice>
		<Primary Device="Keyboard" Key="Key_Tab" />
		<Secondary Device="{NoDevice}" Key="" />
	</UseBoostJuice>
	<HyperSuperCombination>
		<Primary Device="Keyboard" Key="Key_J" />
		<Secondary Device="{NoDevice}" Key="" />
	</HyperSuperCombination>
	<Supercruise>
		<Primary Device="Keyboard" Key="Key_Numpad_Subtract" />
		<Secondary Device="{NoDevice}" Key="" />
	</Supercruise>
	<Hyperspace>
		<Primary Device="Keyboard" Key="Key_Numpad_Add" />
		<Secondary Device="{NoDevice}" Key="" />
	</Hyperspace>
	<DisableRotationCorrectToggle>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
		<ToggleOn Value="1" />
	</DisableRotationCorrectToggle>
	<OrbitLinesToggle>
		<Primary Device="Keyboard" Key="Key_Equals" />
		<Secondary Device="{NoDevice}" Key="" />
	</OrbitLinesToggle>
	<SelectTarget>
		<Primary Device="Keyboard" Key="Key_T" />
		<Secondary Device="{NoDevice}" Key="" />
	</SelectTarget>
	<CycleNextTarget>
		<Primary Device="Keyboard" Key="Key_Period" />
		<Secondary Device="{NoDevice}" Key="" />
	</CycleNextTarget>
	<CyclePreviousTarget>
		<Primary Device="Keyboard" Key="Key_Comma" />
		<Secondary Device="{NoDevice}" Key="" />
	</CyclePreviousTarget>
	<SelectHighestThreat>
		<Primary Device="Keyboard" Key="Key_H" />
		<Secondary Device="{NoDevice}" Key="" />
	</SelectHighestThreat>
	<CycleNextHostileTarget>
		<Primary Device="Keyboard" Key="Key_SemiColon" />
		<Secondary Device="{NoDevice}" Key="" />
	</CycleNextHostileTarget>
	<CyclePreviousHostileTarget>
		<Primary Device="Keyboard" Key="Key_Apostrophe" />
		<Secondary Device="{NoDevice}" Key="" />
	</CyclePreviousHostileTarget>
	<TargetWingman0>
		<Primary Device="Keyboard" Key="Key_7" />
		<Secondary Device="{NoDevice}" Key="" />
	</TargetWingman0>
	<TargetWingman1>
		<Primary Device="Keyboard" Key="Key_8" />
		<Secondary Device="{NoDevice}" Key="" />
	</TargetWingman1>
	<TargetWingman2>
		<Primary Device="Keyboard" Key="Key_9" />
		<Secondary Device="{NoDevice}" Key="" />
	</TargetWingman2>
	<SelectTargetsTarget>
		<Primary Device="Keyboard" Key="Key_0" />
		<Secondary Device="{NoDevice}" Key="" />
	</SelectTargetsTarget>
	<WingNavLock>
		<Primary Device="Keyboard" Key="Key_Minus" />
		<Secondary Device="{NoDevice}" Key="" />
	</WingNavLock>
	<CycleNextSubsystem>
		<Primary Device="Keyboard" Key="Key_Y" />
		<Secondary Device="{NoDevice}" Key="" />
	</CycleNextSubsystem>
	<CyclePreviousSubsystem>
		<Primary Device="Keyboard" Key="Key_B" />
		<Secondary Device="{NoDevice}" Key="" />
	</CyclePreviousSubsystem>
	<TargetNextRouteSystem>
		<Primary Device="Keyboard" Key="Key_Numpad_5" />
		<Secondary Device="{NoDevice}" Key="" />
	</TargetNextRouteSystem>
	<PrimaryFire>
		<Primary Device="Mouse" Key="Mouse_1" />
		<Secondary Device="{NoDevice}" Key="" />
	</PrimaryFire>
	<SecondaryFire>
		<Primary Device="Mouse" Key="Mouse_2" />
		<Secondary Device="{NoDevice}" Key="" />
	</SecondaryFire>
	<CycleFireGroupNext>
		<Primary Device="Keyboard" Key="Key_N" />
		<Secondary Device="{NoDevice}" Key="" />
	</CycleFireGroupNext>
	<CycleFireGroupPrevious>
		<Primary Device="Keyboard" Key="Key_M" />
		<Secondary Device="{NoDevice}" Key="" />
	</CycleFireGroupPrevious>
	<DeployHardpointToggle>
		<Primary Device="Keyboard" Key="Key_U" />
		<Secondary Device="{NoDevice}" Key="" />
	</DeployHardpointToggle>
	<DeployHardpointsOnFire Value="1" />
	<ToggleButtonUpInput>
		<Primary Device="Keyboard" Key="Key_Delete" />
		<Secondary Device="{NoDevice}" Key="" />
		<ToggleOn Value="1" />
	</ToggleButtonUpInput>
	<DeployHeatSink>
		<Primary Device="Keyboard" Key="Key_V" />
		<Secondary Device="{NoDevice}" Key="" />
	</DeployHeatSink>
	<ShipSpotLightToggle>
		<Primary Device="Keyboard" Key="Key_Insert" />
		<Secondary Device="{NoDevice}" Key="" />
	</ShipSpotLightToggle>
	<RadarRangeAxis>
		<Binding Device="{NoDevice}" Key="" />
		<Inverted Value="0" />
		<Deadzone Value="0.00000000" />
	</RadarRangeAxis>
	<RadarIncreaseRange>
		<Primary Device="Keyboard" Key="Key_PageUp" />
		<Secondary Device="{NoDevice}" Key="" />
	</RadarIncreaseRange>
	<RadarDecreaseRange>
		<Primary Device="Keyboard" Key="Key_PageDown" />
		<Secondary Device="{NoDevice}" Key="" />
	</RadarDecreaseRange>
	<IncreaseEnginesPower>
		<Primary Device="Keyboard" Key="Key_UpArrow" />
		<Secondary Device="{NoDevice}" Key="" />
	</IncreaseEnginesPower>
	<IncreaseWeaponsPower>
		<Primary Device="Keyboard" Key="Key_RightArrow" />
		<Secondary Device="{NoDevice}" Key="" />
	</IncreaseWeaponsPower>
	<IncreaseSystemsPower>
		<Primary Device="Keyboard" Key="Key_LeftArrow" />
		<Secondary Device="{NoDevice}" Key="" />
	</IncreaseSystemsPower>
	<ResetPowerDistribution>
		<Primary Device="Keyboard" Key="Key_DownArrow" />
		<Secondary Device="{NoDevice}" Key="" />
	</ResetPowerDistribution>
	<HMDReset>
		<Primary Device="Keyboard" Key="Key_F12" />
		<Secondary Device="{NoDevice}" Key="" />
	</HMDReset>
	<ToggleCargoScoop>
		<Primary Device="Keyboard" Key="Key_Home" />
		<Secondary Device="{NoDevice}" Key="" />
		<ToggleOn Value="1" />
	</ToggleCargoScoop>
	<EjectAllCargo>
		<Primary Device="Keyboard" Key="Key_End" />
		<Secondary Device="{NoDevice}" Key="" />
	</EjectAllCargo>
	<LandingGearToggle>
		<Primary Device="Keyboard" Key="Key_L" />
		<Secondary Device="{NoDevice}" Key="" />
	</LandingGearToggle>
	<MicrophoneMute>
		<Primary Device="Keyboard" Key="Key_BackSlash" />
		<Secondary Device="{NoDevice}" Key="" />
	</MicrophoneMute>
	<MuteButtonMode Value="mute_toggle" />
	<CqcMuteButtonMode Value="mute_pushToTalk" />
	<UseShieldCell>
		<Primary Device="Keyboard" Key="Key_C" />
		<Secondary Device="{NoDevice}" Key="" />
	</UseShieldCell>
	<FireChaffLauncher>
		<Primary Device="Keyboard" Key="Key_K" />
		<Secondary Device="{NoDevice}" Key="" />
	</FireChaffLauncher>
	<PhotoCameraToggle>
		<Primary Device="Keyboard" Key="Key_Space">
			<Modifier Device="Keyboard" Key="Key_LeftControl" />
			<Modifier Device="Keyboard" Key="Key_LeftAlt" />
		</Primary>
		<Secondary Device="{NoDevice}" Key="" />
	</PhotoCameraToggle>
	<EnableMenuGroups Value="0" />
	<UIFocus>
		<Primary Device="Keyboard" Key="Key_LeftShift" />
		<Secondary Device="{NoDevice}" Key="" />
	</UIFocus>
	<UIFocusMode Value="Bindings_FocusModeHold" />
	<FocusLeftPanel>
		<Primary Device="Keyboard" Key="Key_1" />
		<Secondary Device="{NoDevice}" Key="" />
	</FocusLeftPanel>
	<FocusCommsPanel>
		<Primary Device="Keyboard" Key="Key_2" />
		<Secondary Device="{NoDevice}" Key="" />
	</FocusCommsPanel>
	<FocusOnTextEntryField Value="0" />
	<QuickCommsPanel>
		<Primary Device="Keyboard" Key="Key_Enter" />
		<Secondary Device="{NoDevice}" Key="" />
	</QuickCommsPanel>
	<FocusRadarPanel>
		<Primary Device="Keyboard" Key="Key_3" />
		<Secondary Device="{NoDevice}" Key="" />
	</FocusRadarPanel>
	<FocusRightPanel>
		<Primary Device="Keyboard" Key="Key_4" />
		<Secondary Device="{NoDevice}" Key="" />
	</FocusRightPanel>
	<LeftPanelFocusOptions Value="" />
	<CommsPanelFocusOptions Value="FocusOption_Show" />
	<RolePanelFocusOptions Value="" />
	<RightPanelFocusOptions Value="" />
	<EnableCameraLockOn Value="1" />
	<GalaxyMapOpen>
		<Primary Device="Keyboard" Key="Key_Numpad_Divide" />
		<Secondary Device="{NoDevice}" Key="" />
	</GalaxyMapOpen>
	<SystemMapOpen>
		<Primary Device="Keyboard" Key="Key_Numpad_Multiply" />
		<Secondary Device="{NoDevice}" Key="" />
	</SystemMapOpen>
	<ShowPGScoreSummaryInput>
		<Primary Device="Keyboard" Key="Key_F1" />
		<Secondary Device="{NoDevice}" Key="" />
		<ToggleOn Value="0" />
	</ShowPGScoreSummaryInput>
	<HeadLookToggle>
		<Primary Device="Mouse" Key="Mouse_3" />
		<Secondary Device="{NoDevice}" Key="" />
		<ToggleOn Value="1" />
	</HeadLookToggle>
	<Pause>
		<Primary Device="Keyboard" Key="Key_P" />
		<Secondary Device="{NoDevice}" Key="" />
	</Pause>
	<UI_Up>
		<Primary Device="Keyboard" Key="Key_W" />
		<Secondary Device="{NoDevice}" Key="" />
	</UI_Up>
	<UI_Down>
		<Primary Device="Keyboard" Key="Key_S" />
		<Secondary Device="{NoDevice}" Key="" />
	</UI_Down>
	<UI_Left>
		<Primary Device="Keyboard" Key="Key_A" />
		<Secondary Device="{NoDevice}" Key="" />
	</UI_Left>
	<UI_Right>
		<Primary Device="Keyboard" Key="Key_D" />
		<Secondary Device="{NoDevice}" Key="" />
	</UI_Right>
	<UI_Select>
		<Primary Device="Keyboard" Key="Key_Space" />
		<Secondary Device="{NoDevice}" Key="" />
	</UI_Select>
	<UI_Back>
		<Primary Device="Keyboard" Key="Key_Backspace" />
		<Secondary Device="Mouse" Key="Mouse_2" />
	</UI_Back>
	<UI_Toggle>
		<Primary Device="Keyboard" Key="Key_Equals" />
		<Secondary Device="{NoDevice}" Key="" />
	</UI_Toggle>
	<CycleNextPanel>
		<Primary Device="Keyboard" Key="Key_E" />
		<Secondary Device="{NoDevice}" Key="" />
	</CycleNextPanel>
	<CyclePreviousPanel>
		<Primary Device="Keyboard" Key="Key_Q" />
		<Secondary Device="{NoDevice}" Key="" />
	</CyclePreviousPanel>
	<MouseHeadlook Value="1" />
	<MouseHeadlookInvert Value="0" />
	<MouseHeadlookSensitivity Value="0.50000000" />
	<HeadlookDefault Value="0" />
	<HeadlookIncrement Value="0.00000000" />
	<HeadlookMode Value="Bindings_HeadlookModeAccumulate" />
	<HeadlookResetOnToggle Value="1" />
	<HeadlookSensitivity Value="1.00000000" />
	<HeadLookReset>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</HeadLookReset>
	<HeadLookPitchUp>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</HeadLookPitchUp>
	<HeadLookPitchDown>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</HeadLookPitchDown>
	<HeadLookPitchAxisRaw>
		<Binding Device="{NoDevice}" Key="" />
		<Inverted Value="0" />
		<Deadzone Value="0.00000000" />
	</HeadLookPitchAxisRaw>
	<HeadLookYawLeft>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</HeadLookYawLeft>
	<HeadLookYawRight>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</HeadLookYawRight>
	<HeadLookYawAxis>
		<Binding Device="{NoDevice}" Key="" />
		<Inverted Value="0" />
		<Deadzone Value="0.00000000" />
	</HeadLookYawAxis>
	<CamPitchAxis>
		<Binding Device="{NoDevice}" Key="" />
		<Inverted Value="0" />
		<Deadzone Value="0.00000000" />
	</CamPitchAxis>
	<CamPitchUp>
		<Primary Device="Keyboard" Key="Key_T" />
		<Secondary Device="{NoDevice}" Key="" />
	</CamPitchUp>
	<CamPitchDown>
		<Primary Device="Keyboard" Key="Key_G" />
		<Secondary Device="{NoDevice}" Key="" />
	</CamPitchDown>
	<CamYawAxis>
		<Binding Device="{NoDevice}" Key="" />
		<Inverted Value="0" />
		<Deadzone Value="0.00000000" />
	</CamYawAxis>
	<CamYawLeft>
		<Primary Device="Keyboard" Key="Key_Q" />
		<Secondary Device="{NoDevice}" Key="" />
	</CamYawLeft>
	<CamYawRight>
		<Primary Device="Keyboard" Key="Key_E" />
		<Secondary Device="{NoDevice}" Key="" />
	</CamYawRight>
	<CamTranslateYAxis>
		<Binding Device="{NoDevice}" Key="" />
		<Inverted Value="0" />
		<Deadzone Value="0.00000000" />
	</CamTranslateYAxis>
	<CamTranslateForward>
		<Primary Device="Keyboard" Key="Key_W" />
		<Secondary Device="{NoDevice}" Key="" />
	</CamTranslateForward>
	<CamTranslateBackward>
		<Primary Device="Keyboard" Key="Key_S" />
		<Secondary Device="{NoDevice}" Key="" />
	</CamTranslateBackward>
	<CamTranslateXAxis>
		<Binding Device="{NoDevice}" Key="" />
		<Inverted Value="0" />
		<Deadzone Value="0.00000000" />
	</CamTranslateXAxis>
	<CamTranslateLeft>
		<Primary Device="Keyboard" Key="Key_A" />
		<Secondary Device="{NoDevice}" Key="" />
	</CamTranslateLeft>
	<CamTranslateRight>
		<Primary Device="Keyboard" Key="Key_D" />
		<Secondary Device="{NoDevice}" Key="" />
	</CamTranslateRight>
	<CamTranslateZAxis>
		<Binding Device="{NoDevice}" Key="" />
		<Inverted Value="0" />
		<Deadzone Value="0.00000000" />
	</CamTranslateZAxis>
	<CamTranslateUp>
		<Primary Device="Keyboard" Key="Key_R" />
		<Secondary Device="{NoDevice}" Key="" />
	</CamTranslateUp>
	<CamTranslateDown>
		<Primary Device="Keyboard" Key="Key_F" />
		<Secondary Device="{NoDevice}" Key="" />
	</CamTranslateDown>
	<CamZoomAxis>
		<Binding Device="{NoDevice}" Key="" />
		<Inverted Value="0" />
		<Deadzone Value="0.00000000" />
	</CamZoomAxis>
	<CamZoomIn>
		<Primary Device="Keyboard" Key="Key_Z" />
		<Secondary Device="{NoDevice}" Key="" />
	</CamZoomIn>
	<CamZoomOut>
		<Primary Device="Keyboard" Key="Key_X" />
		<Secondary Device="{NoDevice}" Key="" />
	</CamZoomOut>
	<CamTranslateZHold>
		<Primary Device="Keyboard" Key="Key_O" />
		<Secondary Device="{NoDevice}" Key="" />
		<ToggleOn Value="0" />
	</CamTranslateZHold>
	<ToggleDriveAssist>
		<Primary Device="Keyboard" Key="Key_Z" />
		<Secondary Device="{NoDevice}" Key="" />
		<ToggleOn Value="1" />
	</ToggleDriveAssist>
	<DriveAssistDefault Value="1" />
	<MouseBuggySteeringXMode Value="" />
	<MouseBuggySteeringXDecay Value="0" />
	<MouseBuggyRollingXMode Value="" />
	<MouseBuggyRollingXDecay Value="0" />
	<MouseBuggyYMode Value="" />
	<MouseBuggyYDecay Value="0" />
	<SteeringAxis>
		<Binding Device="{NoDevice}" Key="" />
		<Inverted Value="0" />
		<Deadzone Value="0.00000000" />
	</SteeringAxis>
	<SteerLeftButton>
		<Primary Device="Keyboard" Key="Key_A" />
		<Secondary Device="{NoDevice}" Key="" />
	</SteerLeftButton>
	<SteerRightButton>
		<Primary Device="Keyboard" Key="Key_D" />
		<Secondary Device="{NoDevice}" Key="" />
	</SteerRightButton>
	<BuggyRollAxisRaw>
		<Binding Device="{NoDevice}" Key="" />
		<Inverted Value="0" />
		<Deadzone Value="0.00000000" />
	</BuggyRollAxisRaw>
	<BuggyRollLeftButton>
		<Primary Device="Keyboard" Key="Key_A" />
		<Secondary Device="{NoDevice}" Key="" />
	</BuggyRollLeftButton>
	<BuggyRollRightButton>
		<Primary Device="Keyboard" Key="Key_D" />
		<Secondary Device="{NoDevice}" Key="" />
	</BuggyRollRightButton>
	<BuggyPitchAxis>
		<Binding Device="{NoDevice}" Key="" />
		<Inverted Value="0" />
		<Deadzone Value="0.00000000" />
	</BuggyPitchAxis>
	<BuggyPitchUpButton>
		<Primary Device="Keyboard" Key="Key_W" />
		<Secondary Device="{NoDevice}" Key="" />
	</BuggyPitchUpButton>
	<BuggyPitchDownButton>
		<Primary Device="Keyboard" Key="Key_S" />
		<Secondary Device="{NoDevice}" Key="" />
	</BuggyPitchDownButton>
	<VerticalThrustersButton>
		<Primary Device="Keyboard" Key="Key_Space" />
		<Secondary Device="{NoDevice}" Key="" />
		<ToggleOn Value="0" />
	</VerticalThrustersButton>
	<BuggyPrimaryFireButton>
		<Primary Device="Mouse" Key="Mouse_1" />
		<Secondary Device="{NoDevice}" Key="" />
	</BuggyPrimaryFireButton>
	<BuggySecondaryFireButton>
		<Primary Device="Mouse" Key="Mouse_2" />
		<Secondary Device="{NoDevice}" Key="" />
	</BuggySecondaryFireButton>
	<AutoBreakBuggyButton>
		<Primary Device="Keyboard" Key="Key_X" />
		<Secondary Device="{NoDevice}" Key="" />
		<ToggleOn Value="0" />
	</AutoBreakBuggyButton>
	<HeadlightsBuggyButton>
		<Primary Device="Keyboard" Key="Key_L" />
		<Secondary Device="{NoDevice}" Key="" />
	</HeadlightsBuggyButton>
	<ToggleBuggyTurretButton>
		<Primary Device="Keyboard" Key="Key_U" />
		<Secondary Device="{NoDevice}" Key="" />
	</ToggleBuggyTurretButton>
	<SelectTarget_Buggy>
		<Primary Device="Mouse" Key="Mouse_2" />
		<Secondary Device="{NoDevice}" Key="" />
	</SelectTarget_Buggy>
	<MouseTurretXMode Value="Bindings_MouseYaw" />
	<MouseTurretXDecay Value="1" />
	<MouseTurretYMode Value="Bindings_MousePitchInverted" />
	<MouseTurretYDecay Value="1" />
	<BuggyTurretYawAxisRaw>
		<Binding Device="{NoDevice}" Key="" />
		<Inverted Value="0" />
		<Deadzone Value="0.00000000" />
	</BuggyTurretYawAxisRaw>
	<BuggyTurretYawLeftButton>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</BuggyTurretYawLeftButton>
	<BuggyTurretYawRightButton>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</BuggyTurretYawRightButton>
	<BuggyTurretPitchAxisRaw>
		<Binding Device="{NoDevice}" Key="" />
		<Inverted Value="0" />
		<Deadzone Value="0.00000000" />
	</BuggyTurretPitchAxisRaw>
	<BuggyTurretPitchUpButton>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</BuggyTurretPitchUpButton>
	<BuggyTurretPitchDownButton>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</BuggyTurretPitchDownButton>
	<DriveSpeedAxis>
		<Binding Device="{NoDevice}" Key="" />
		<Inverted Value="0" />
		<Deadzone Value="0.00000000" />
	</DriveSpeedAxis>
	<BuggyThrottleRange Value="Bindings_BuggyThrottleForewardOnly" />
	<BuggyToggleReverseThrottleInput>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
		<ToggleOn Value="1" />
	</BuggyToggleReverseThrottleInput>
	<BuggyThrottleIncrement Value="0.00000000" />
	<IncreaseSpeedButtonMax>
		<Primary Device="Keyboard" Key="Key_E" />
		<Secondary Device="{NoDevice}" Key="" />
	</IncreaseSpeedButtonMax>
	<DecreaseSpeedButtonMax>
		<Primary Device="Keyboard" Key="Key_Q" />
		<Secondary Device="{NoDevice}" Key="" />
	</DecreaseSpeedButtonMax>
	<IncreaseSpeedButtonPartial>
		<Binding Device="{NoDevice}" Key="" />
		<Inverted Value="0" />
		<Deadzone Value="0.00000000" />
	</IncreaseSpeedButtonPartial>
	<DecreaseSpeedButtonPartial>
		<Binding Device="{NoDevice}" Key="" />
		<Inverted Value="0" />
		<Deadzone Value="0.00000000" />
	</DecreaseSpeedButtonPartial>
	<IncreaseEnginesPower_Buggy>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</IncreaseEnginesPower_Buggy>
	<IncreaseWeaponsPower_Buggy>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</IncreaseWeaponsPower_Buggy>
	<IncreaseSystemsPower_Buggy>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</IncreaseSystemsPower_Buggy>
	<ResetPowerDistribution_Buggy>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</ResetPowerDistribution_Buggy>
	<ToggleCargoScoop_Buggy>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
		<ToggleOn Value="0" />
	</ToggleCargoScoop_Buggy>
	<EjectAllCargo_Buggy>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</EjectAllCargo_Buggy>
	<PhotoCameraToggle_Buggy>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
		<ToggleOn Value="0" />
	</PhotoCameraToggle_Buggy>
	<UIFocus_Buggy>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</UIFocus_Buggy>
	<FocusLeftPanel_Buggy>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</FocusLeftPanel_Buggy>
	<FocusCommsPanel_Buggy>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</FocusCommsPanel_Buggy>
	<QuickCommsPanel_Buggy>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</QuickCommsPanel_Buggy>
	<FocusRadarPanel_Buggy>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</FocusRadarPanel_Buggy>
	<FocusRightPanel_Buggy>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</FocusRightPanel_Buggy>
	<GalaxyMapOpen_Buggy>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</GalaxyMapOpen_Buggy>
	<SystemMapOpen_Buggy>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
	</SystemMapOpen_Buggy>
	<HeadLookToggle_Buggy>
		<Primary Device="{NoDevice}" Key="" />
		<Secondary Device="{NoDevice}" Key="" />
		<ToggleOn Value="0" />
	</HeadLookToggle_Buggy>
</Root>
 
Share this answer
 
Comments
antaresinsomnious 20-Oct-16 0:23am    
Indexes 59, 78, and 111 are the only 3 that bring back the full string, and I still can't seem to make it not do that.
The way I got it to work.

C#
internal void ReadEDKeyBindings()
        {
            string edKB = GetEDBindingsPath();
            List<string> list = new List<string>();
            List<string> parent = new List<string>();
            List<string> child = new List<string>();
            XDocument doc = XDocument.Load(edKB);
            var allElements = doc.Descendants();

            //var matchingElements = doc.Descendants()
            //    .Where(x => x.Attribute("Key") != null);


            foreach (var a in allElements)
            {
                string str = a.ToString();
                string[] pPart = str.Split(new[] { '\r' });
                foreach (string p in pPart)
                {
                    list.Add(p);
                }
            }

            foreach (string l in list)
            {
                if (!l.Contains("Buggy"))
                {
                    if (l.Contains("Key") && (!l.Contains("Modifier") && (!l.Contains("Secondary") && (!l.Contains("Joy")))))
                    {
                        try
                        {
                            string[] parts = l.Split(new[] { ' ' });
                            string sub = parts[6].Substring(5);
                            int last = sub.Length - 1;
                            sub = sub.Substring(0, last);
                            if (sub != "")
                            {
                                int index = list.IndexOf(l);

                                string tmp1 = list[index - 1];

                                string tmp2 = tmp1.Substring(4);
                                int iTmp = tmp2.Length - 1;
                                string p = tmp2.Substring(0, iTmp);
                                parent.Add(p);
                                child.Add(sub);
                            }
                        }
                        catch
                        {

                        }
                    }
                }
            }
            //for (int i = 0; i < parent.Count(); i++)
            //{
            //    Console.WriteLine("Index = " + i + " :  Parent : " + parent[i] + " : Child : " + child[i]);
            //    //Console.ReadKey();
            //}
            //Console.ReadKey();
        }
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900